diff options
| author | Kris De Gussem <kris.degussem@gmail.com> | 2012-09-02 19:32:59 +0000 |
|---|---|---|
| committer | Kris <Kris.De.Gussem@hotmail.com> | 2012-09-02 19:32:59 +0000 |
| commit | fd0a5dfa4cb237f8e5232c785693cc3e676336e8 (patch) | |
| tree | 74bc967114726b2e9b87ba2439cdbfed03549dde /src/xml/simple-node.cpp | |
| parent | performance: ?? (diff) | |
| download | inkscape-fd0a5dfa4cb237f8e5232c785693cc3e676336e8.tar.gz inkscape-fd0a5dfa4cb237f8e5232c785693cc3e676336e8.zip | |
converted some c-string usage to c++ string class usage: should fix some memory leaks
(bzr r11646)
Diffstat (limited to 'src/xml/simple-node.cpp')
| -rw-r--r-- | src/xml/simple-node.cpp | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/src/xml/simple-node.cpp b/src/xml/simple-node.cpp index c197d648b..3d59647cf 100644 --- a/src/xml/simple-node.cpp +++ b/src/xml/simple-node.cpp @@ -320,7 +320,7 @@ SimpleNode::setAttribute(gchar const *name, gchar const *value, bool const /*is_ Glib::ustring element = g_quark_to_string(_name); //g_warning("setAttribute: %s: %s: %s", element.c_str(), name, value); - gchar* cleaned_value = g_strdup( value ); + Glib::ustring cleaned_value = (value ? value : Glib::ustring()); // Only check elements in SVG name space and don't block setting attribute to NULL. if( element.substr(0,4) == "svg:" && value != NULL) { @@ -338,7 +338,6 @@ SimpleNode::setAttribute(gchar const *name, gchar const *value, bool const /*is_ if( (attr_warn || attr_remove) && value != NULL ) { bool is_useful = sp_attribute_check_attribute( element, id, name, attr_warn ); if( !is_useful && attr_remove ) { - g_free( cleaned_value ); return; // Don't add to tree. } } @@ -346,7 +345,6 @@ SimpleNode::setAttribute(gchar const *name, gchar const *value, bool const /*is_ // Check style properties -- Note: if element is not yet inserted into // tree (and thus has no parent), default values will not be tested. if( !strcmp( name, "style" ) && (flags >= SP_ATTR_CLEAN_STYLE_WARN) ) { - g_free( cleaned_value ); cleaned_value = sp_attribute_clean_style( this, value, flags ); // if( g_strcmp0( value, cleaned_value ) ) { // g_warning( "SimpleNode::setAttribute: %s", id.c_str() ); @@ -372,8 +370,8 @@ SimpleNode::setAttribute(gchar const *name, gchar const *value, bool const /*is_ ptr_shared<char> old_value=( existing ? existing->value : ptr_shared<char>() ); ptr_shared<char> new_value=ptr_shared<char>(); - if (cleaned_value) { - new_value = share_string(cleaned_value); + if (~cleaned_value.empty()) { + new_value = share_string(cleaned_value.c_str()); tracker.set<DebugSetAttribute>(*this, key, new_value); if (!existing) { if (ref) { @@ -401,9 +399,6 @@ SimpleNode::setAttribute(gchar const *name, gchar const *value, bool const /*is_ _observers.notifyAttributeChanged(*this, key, old_value, new_value); //g_warning( "setAttribute notified: %s: %s: %s: %s", name, element.c_str(), old_value, new_value ); } - - g_free( cleaned_value ); - } void SimpleNode::addChild(Node *generic_child, Node *generic_ref) { |
