[goffice] Graphs: plug leak.



commit f207c58806e997ee2eff9d27ace19ec44951c2cb
Author: Morten Welinder <terra gnome org>
Date:   Mon Mar 17 21:04:53 2014 -0400

    Graphs: plug leak.

 ChangeLog                        |    4 ++++
 NEWS                             |    2 +-
 goffice/graph/gog-child-button.c |   25 ++++++++++++++-----------
 3 files changed, 19 insertions(+), 12 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index c07f0b1..f1c47fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2014-03-17  Morten Welinder  <terra gnome org>
 
+       * goffice/graph/gog-child-button.c
+       (build_addition_process_children): Renamed from
+       build_addition_process_childs.  Plug leak.
+
        * goffice/canvas/goc-canvas.c (goc_canvas_dispose): Dispose of
        ->root instead of simply clearing it.
 
diff --git a/NEWS b/NEWS
index 241f98b..6f485d8 100644
--- a/NEWS
+++ b/NEWS
@@ -14,7 +14,7 @@ Julian Sikorski:
 
 Morten:
        * Fix problem saving print settings.  [#698630]
-       * Plug leak.
+       * Plug leaks.
        * Fix FMW problem with GocPolyline/GocPolygon.
 
 --------------------------------------------------------------------------
diff --git a/goffice/graph/gog-child-button.c b/goffice/graph/gog-child-button.c
index 3a947d2..ac6d328 100644
--- a/goffice/graph/gog-child-button.c
+++ b/goffice/graph/gog-child-button.c
@@ -150,18 +150,16 @@ typedef struct {
 } BuildAdditionData;
 
 static void
-build_addition_process_childs (GogObject *object, BuildAdditionData *closure)
+build_addition_process_children (GogObject *object, BuildAdditionData *closure)
 {
-       GogObjectRole *role;
-       Addition *addition;
-       GSList *child_iter;
        GSList *role_iter;
        GSList *additions;
 
        additions = gog_object_possible_additions (object);
        for (role_iter = additions; role_iter != NULL; role_iter = role_iter->next) {
-               role = role_iter->data;
-               addition = g_hash_table_lookup (closure->additions, role->id);
+               GogObjectRole *role = role_iter->data;
+               Addition *addition =
+                       g_hash_table_lookup (closure->additions, role->id);
                if ( addition == NULL) {
                        addition = g_new (Addition, 1);
                        addition->role = role;
@@ -177,10 +175,15 @@ build_addition_process_childs (GogObject *object, BuildAdditionData *closure)
                } else if (addition->parent != closure->child_button->object)
                        addition->parent = NULL;
        }
-
-       if (!GOG_IS_GRAPH (object))
-               for (child_iter = object->children; child_iter != NULL; child_iter = child_iter->next)
-                               build_addition_process_childs (child_iter->data, closure);
+       g_slist_free (additions);
+
+       if (!GOG_IS_GRAPH (object)) {
+               GSList *child_iter;
+               for (child_iter = object->children;
+                    child_iter;
+                    child_iter = child_iter->next)
+                       build_addition_process_children (child_iter->data, closure);
+       }
 }
 
 static void
@@ -222,7 +225,7 @@ gog_child_button_build_additions (GogChildButton *child_button)
                  start_object = start_object->parent);
 
        if (start_object != NULL) {
-               build_addition_process_childs (start_object, &closure);
+               build_addition_process_children (start_object, &closure);
 
                g_hash_table_foreach (closure.additions,
                                      (GHFunc) build_addition_foreach,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]