[goffice] GogDataLabel: plug leaks.



commit 27b4d294681f1bd94a349653af82d0a30863c220
Author: Morten Welinder <terra gnome org>
Date:   Tue Feb 24 21:19:17 2015 -0500

    GogDataLabel: plug leaks.

 ChangeLog                         |    5 +++++
 goffice/graph/gog-series-labels.c |   15 ++++++++++-----
 2 files changed, 15 insertions(+), 5 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index f11ecd2..9ffa4ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2015-02-24  Morten Welinder  <terra gnome org>
 
+       * goffice/graph/gog-series-labels.c (gog_data_label_finalize):
+       Plug leak.
+       (role_data_label_post_add): Plug leak.
+       (gog_series_labels_finalize): Plug leak.
+
        * goffice/graph/gog-axis-line.c
        (gog_axis_base_get_crossed_axis_type): Make this public.
        (gog_axis_base_get_crossed_axis_for_plot): New function -- when we
diff --git a/goffice/graph/gog-series-labels.c b/goffice/graph/gog-series-labels.c
index b189d1f..1e76110 100644
--- a/goffice/graph/gog-series-labels.c
+++ b/goffice/graph/gog-series-labels.c
@@ -755,6 +755,7 @@ gog_data_label_finalize (GObject *obj)
        GogDataLabel *label = GOG_DATA_LABEL (obj);
        gog_dataset_finalize (GOG_DATASET (obj));
        g_free (label->format);
+       g_free (label->separator);
        go_string_unref (label->element.str);
        data_label_parent_klass->finalize (obj);
 }
@@ -1337,6 +1338,7 @@ gog_series_labels_finalize (GObject *obj)
                        go_string_unref (labels->elements[i].str);
                g_free (labels->elements);
        }
+       g_list_free (labels->overrides);
        series_labels_parent_klass->finalize (obj);
 }
 
@@ -1368,11 +1370,19 @@ role_data_label_post_add (GogObject *parent, GogObject *child)
                go_styled_object_get_style (GO_STYLED_OBJECT (parent)));
        lbls->overrides = g_list_insert_sorted (lbls->overrides, child,
                (GCompareFunc) element_compare);
+
+       lbl->format = g_strdup ("");
+       lbl->default_pos = lbls->default_pos;
+       lbl->allowed_pos = lbls->allowed_pos;
+       lbl->position = lbls->position;
+       lbl->supports_percent = lbls->supports_percent;
+
        plot = (GogPlot *) gog_object_get_parent_typed (child, GOG_TYPE_PLOT);
        for (j = 0; j < plot->desc.series.num_dim; j++) {
                /* FIXME, this might depend upon the series type */
                switch (plot->desc.series.dim[j].ms_type) {
                case GOG_MS_DIM_VALUES:
+                       g_free (lbl->format);
                        lbl->format = g_strdup_printf ("%%%u", j);
                        j = plot->desc.series.num_dim; /* ensure we exit the loop */
                        break;
@@ -1380,11 +1390,6 @@ role_data_label_post_add (GogObject *parent, GogObject *child)
                        break;
                }
        }
-       lbl->format = g_strdup ("");
-       lbl->default_pos = lbls->default_pos;
-       lbl->allowed_pos = lbls->allowed_pos;
-       lbl->position = lbls->position;
-       lbl->supports_percent = lbls->supports_percent;
 }
 
 static void


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