[gnumeric] Conditional format: plug leak in gui.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Conditional format: plug leak in gui.
- Date: Sun, 16 Mar 2014 14:07:03 +0000 (UTC)
commit 815ace9186009419953f9400413f94a0c2a6804b
Author: Morten Welinder <terra gnome org>
Date: Sat Mar 15 16:07:54 2014 -0400
Conditional format: plug leak in gui.
NEWS | 1 +
src/dialogs/ChangeLog | 1 +
src/dialogs/dialog-cell-format-cond.c | 11 +++++++++--
src/style-border.c | 7 ++++---
4 files changed, 15 insertions(+), 5 deletions(-)
---
diff --git a/NEWS b/NEWS
index aba7484..ed6bc05 100644
--- a/NEWS
+++ b/NEWS
@@ -24,6 +24,7 @@ Morten:
* Improve xls import/export of conditional formats. [#726202]
* Fix case sensitivity for conditional formats. [#726246]
* Fix minor conditional format GUI issues.
+ * Plug leak.
--------------------------------------------------------------------------
Gnumeric 1.12.12
diff --git a/src/dialogs/ChangeLog b/src/dialogs/ChangeLog
index 5f980c0..b1adf40 100644
--- a/src/dialogs/ChangeLog
+++ b/src/dialogs/ChangeLog
@@ -3,6 +3,7 @@
* dialog-cell-format-cond.c
(cb_c_fmt_dialog_chooser_entry_changed): We need to return FALSE
in a focus-out handler.
+ (c_fmt_dialog_selection_type): Plug leaks.
2014-03-03 Morten Welinder <terra gnome org>
diff --git a/src/dialogs/dialog-cell-format-cond.c b/src/dialogs/dialog-cell-format-cond.c
index 351c5cd..2461a90 100644
--- a/src/dialogs/dialog-cell-format-cond.c
+++ b/src/dialogs/dialog-cell-format-cond.c
@@ -1056,17 +1056,20 @@ c_fmt_dialog_condition_collector (G_GNUC_UNUSED SheetView *sv, GnmRange const *r
static gboolean
c_fmt_dialog_selection_type (SheetView *sv,
- GnmRange const *range,
- gpointer user_data)
+ GnmRange const *range,
+ gpointer user_data)
{
GnmBorder *borders[GNM_STYLE_BORDER_EDGE_MAX] = {NULL};
CFormatState *state = user_data;
+ int i;
GSList *merged = gnm_sheet_merge_get_overlap (sv->sheet, range);
GnmRange r = *range;
gboolean allow_multi =
merged == NULL ||
merged->next != NULL ||
!range_equal ((GnmRange *)merged->data, range);
+
+
g_slist_free (merged);
/* allow_multi == FALSE && !is_singleton (range) means that we are in
@@ -1081,6 +1084,10 @@ c_fmt_dialog_selection_type (SheetView *sv,
state->conflicts = sheet_style_find_conflicts (state->sheet, &r,
&(state->style), borders);
+ for (i = GNM_STYLE_BORDER_TOP ; i < GNM_STYLE_BORDER_EDGE_MAX ; i++) {
+ gnm_style_border_unref (borders[i]);
+ }
+
return TRUE;
}
diff --git a/src/style-border.c b/src/style-border.c
index a19ca9f..1d07dd4 100644
--- a/src/style-border.c
+++ b/src/style-border.c
@@ -286,7 +286,7 @@ gnm_style_border_ref (GnmBorder *border)
/* NULL is ok */
if (border != NULL) {
++border->ref_count;
- if (0) g_printerr ("style border ref: %p\n", border);
+ if (0) g_printerr ("style border ref: %p [color=%p]\n", border, border->color);
}
return border;
}
@@ -327,10 +327,11 @@ cb_border_leak (gpointer key, gpointer value, gpointer user_data)
{
GnmBorder *border = value;
- g_printerr ("Leaking style-border at %p [color=%p line=%d].\n",
+ g_printerr ("Leaking style-border at %p [color=%p line=%d] refs=%d.\n",
(void *)border,
border->color,
- border->line_type);
+ border->line_type,
+ border->ref_count);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]