From 7c5cc63b4d74331cb5ba71faea2d4c1ac8dcae66 Mon Sep 17 00:00:00 2001 From: Jan Lingscheid Date: Tue, 12 Sep 2017 14:38:29 +0200 Subject: Remove usage of GString in sp-object.cpp --- src/sp-object.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/sp-object.cpp') diff --git a/src/sp-object.cpp b/src/sp-object.cpp index 9f15935ac..fc222f701 100644 --- a/src/sp-object.cpp +++ b/src/sp-object.cpp @@ -1540,7 +1540,10 @@ char * SPObject::getTitleOrDesc(gchar const *svg_tagname) const char *result = NULL; SPObject *elem = findFirstChild(svg_tagname); if ( elem ) { - result = elem->textualContent(); + //This string copy could be avoided by changing + //the return type of SPObject::getTitleOrDesc + //to std::unique_ptr + result = g_strdup(elem->textualContent().c_str()); } return result; } @@ -1625,24 +1628,22 @@ SPObject* SPObject::findFirstChild(gchar const *tagname) const return nullptr; } -char* SPObject::textualContent() const +Glib::ustring SPObject::textualContent() const { - GString* text = g_string_new(""); + Glib::ustring text; for (auto& child: children) { Inkscape::XML::NodeType child_type = child.repr->type(); if (child_type == Inkscape::XML::ELEMENT_NODE) { - char* new_string = child.textualContent(); - g_string_append(text, new_string); - g_free(new_string); + text += child.textualContent(); } else if (child_type == Inkscape::XML::TEXT_NODE) { - g_string_append(text, child.repr->content()); + text += child.repr->content(); } } - return g_string_free(text, FALSE); + return text; } // For debugging: Print SP tree structure. -- cgit v1.2.3