From 487f0940377b4fbf9ebae8ab2a53f2f992e60deb Mon Sep 17 00:00:00 2001 From: Nathan Lee <2431820-nathanal@users.noreply.gitlab.com> Date: Thu, 10 Oct 2019 22:05:48 +1100 Subject: Reduce memory leak on editing text, etc. --- src/widgets/paint-selector.cpp | 23 +++++++++++++++++------ src/widgets/toolbox.cpp | 4 +++- 2 files changed, 20 insertions(+), 7 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/paint-selector.cpp b/src/widgets/paint-selector.cpp index e1a6c2b5b..e80951928 100644 --- a/src/widgets/paint-selector.cpp +++ b/src/widgets/paint-selector.cpp @@ -963,6 +963,8 @@ void SPPaintSelector::updateMeshList( SPMeshGradient *mesh ) gtk_tree_model_get (store, &iter, COMBO_COL_MESH, &meshid, -1); while (valid && strcmp(meshid, meshname) != 0) { valid = gtk_tree_model_iter_next (store, &iter); + g_free(meshid); + meshid = nullptr; gtk_tree_model_get (store, &iter, COMBO_COL_MESH, &meshid, -1); } @@ -971,6 +973,7 @@ void SPPaintSelector::updateMeshList( SPMeshGradient *mesh ) } g_object_set_data(G_OBJECT(combo), "update", GINT_TO_POINTER(FALSE)); + g_free(meshid); } } @@ -1068,9 +1071,11 @@ SPMeshGradient *SPPaintSelector::getMeshGradient() gchar *meshid = nullptr; gboolean stockid = FALSE; - gchar *label = nullptr; - gtk_tree_model_get (store, &iter, COMBO_COL_LABEL, &label, COMBO_COL_STOCK, &stockid, COMBO_COL_MESH, &meshid, -1); + // gchar *label = nullptr; + gtk_tree_model_get (store, &iter, COMBO_COL_STOCK, &stockid, COMBO_COL_MESH, &meshid, -1); + // gtk_tree_model_get (store, &iter, COMBO_COL_LABEL, &label, COMBO_COL_STOCK, &stockid, COMBO_COL_MESH, &meshid, -1); // std::cout << " .. meshid: " << (meshid?meshid:"null") << " label: " << (label?label:"null") << std::endl; + // g_free(label); if (meshid == nullptr) { return nullptr; } @@ -1090,11 +1095,12 @@ SPMeshGradient *SPPaintSelector::getMeshGradient() mesh = SP_MESHGRADIENT(mesh_obj); } g_free(mesh_name); - } else { std::cerr << "SPPaintSelector::getMeshGradient: Unexpected meshid value." << std::endl; } + g_free(meshid); + return mesh; } @@ -1298,8 +1304,11 @@ void SPPaintSelector::updatePatternList( SPPattern *pattern ) gtk_tree_model_get (store, &iter, COMBO_COL_PATTERN, &patid, -1); while (valid && strcmp(patid, patname) != 0) { valid = gtk_tree_model_iter_next (store, &iter); + g_free(patid); + patid = nullptr; gtk_tree_model_get (store, &iter, COMBO_COL_PATTERN, &patid, -1); } + g_free(patid); if (valid) { gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo), &iter); @@ -1433,12 +1442,12 @@ SPPattern *SPPaintSelector::getPattern() gchar *patid = nullptr; gboolean stockid = FALSE; - gchar *label = nullptr; + // gchar *label = nullptr; gtk_tree_model_get(store, &iter, - COMBO_COL_LABEL, &label, + // COMBO_COL_LABEL, &label, COMBO_COL_STOCK, &stockid, COMBO_COL_PATTERN, &patid, -1); - + // g_free(label); if (patid == nullptr) { return nullptr; } @@ -1465,6 +1474,8 @@ SPPattern *SPPaintSelector::getPattern() } } + g_free(patid); + return pat; } diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp index fc5bad47a..365c0a76f 100644 --- a/src/widgets/toolbox.cpp +++ b/src/widgets/toolbox.cpp @@ -727,7 +727,9 @@ void update_aux_toolbox(SPDesktop * /*desktop*/, ToolBase *eventcontext, GtkWidg gchar const *tname = ( eventcontext ? eventcontext->getPrefsPath().c_str() //g_type_name(G_OBJECT_TYPE(eventcontext)) : nullptr ); - GtkWidget *stack = (GtkWidget *)gtk_container_get_children((GtkContainer *)toolbox)->data; + GList *list = gtk_container_get_children((GtkContainer *)toolbox); + GtkWidget *stack = (GtkWidget *)list->data; + g_list_free(list); gtk_stack_set_visible_child_name((GtkStack *)stack, tname); } -- cgit v1.2.3