summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>2000-02-01 23:32:26 +0000
committerTim Janik <timj@src.gnome.org>2000-02-01 23:32:26 +0000
commitcec440f3e4841ba827d270a83dffec437fe75f5a (patch)
tree6cd916239a2ccc117275bf5994dbf5300b4a8f76
parent255369aecb8b971aa5bda3c8fa3ce27c7109bc68 (diff)
downloadgdk-pixbuf-cec440f3e4841ba827d270a83dffec437fe75f5a.tar.gz
fixed very evil reentrancy bugs with destruction notifier, *always* update
Wed Feb 2 22:25:17 2000 Tim Janik <timj@gtk.org> * gtk/gtkctree.c (row_delete): (gtk_ctree_node_set_row_data_full): fixed very evil reentrancy bugs with destruction notifier, *always* update internal structures *before* calling user code.
-rw-r--r--ChangeLog7
-rw-r--r--ChangeLog.pre-2-07
-rw-r--r--ChangeLog.pre-2-107
-rw-r--r--ChangeLog.pre-2-27
-rw-r--r--ChangeLog.pre-2-47
-rw-r--r--ChangeLog.pre-2-67
-rw-r--r--ChangeLog.pre-2-87
-rw-r--r--gtk/gtkctree.c20
8 files changed, 66 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 3a4fc25d5..658c10c15 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Wed Feb 2 22:25:17 2000 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkctree.c (row_delete):
+ (gtk_ctree_node_set_row_data_full): fixed very evil reentrancy bugs with
+ destruction notifier, *always* update internal structures *before*
+ calling user code.
+
Sun Jan 30 20:10:52 2000 Lars Hamann <lars@gtk.org>
A few more fixes for bug #5487, #2051, #2677.
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index 3a4fc25d5..658c10c15 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -1,3 +1,10 @@
+Wed Feb 2 22:25:17 2000 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkctree.c (row_delete):
+ (gtk_ctree_node_set_row_data_full): fixed very evil reentrancy bugs with
+ destruction notifier, *always* update internal structures *before*
+ calling user code.
+
Sun Jan 30 20:10:52 2000 Lars Hamann <lars@gtk.org>
A few more fixes for bug #5487, #2051, #2677.
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 3a4fc25d5..658c10c15 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,10 @@
+Wed Feb 2 22:25:17 2000 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkctree.c (row_delete):
+ (gtk_ctree_node_set_row_data_full): fixed very evil reentrancy bugs with
+ destruction notifier, *always* update internal structures *before*
+ calling user code.
+
Sun Jan 30 20:10:52 2000 Lars Hamann <lars@gtk.org>
A few more fixes for bug #5487, #2051, #2677.
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index 3a4fc25d5..658c10c15 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,10 @@
+Wed Feb 2 22:25:17 2000 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkctree.c (row_delete):
+ (gtk_ctree_node_set_row_data_full): fixed very evil reentrancy bugs with
+ destruction notifier, *always* update internal structures *before*
+ calling user code.
+
Sun Jan 30 20:10:52 2000 Lars Hamann <lars@gtk.org>
A few more fixes for bug #5487, #2051, #2677.
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index 3a4fc25d5..658c10c15 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,10 @@
+Wed Feb 2 22:25:17 2000 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkctree.c (row_delete):
+ (gtk_ctree_node_set_row_data_full): fixed very evil reentrancy bugs with
+ destruction notifier, *always* update internal structures *before*
+ calling user code.
+
Sun Jan 30 20:10:52 2000 Lars Hamann <lars@gtk.org>
A few more fixes for bug #5487, #2051, #2677.
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index 3a4fc25d5..658c10c15 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,10 @@
+Wed Feb 2 22:25:17 2000 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkctree.c (row_delete):
+ (gtk_ctree_node_set_row_data_full): fixed very evil reentrancy bugs with
+ destruction notifier, *always* update internal structures *before*
+ calling user code.
+
Sun Jan 30 20:10:52 2000 Lars Hamann <lars@gtk.org>
A few more fixes for bug #5487, #2051, #2677.
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index 3a4fc25d5..658c10c15 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,10 @@
+Wed Feb 2 22:25:17 2000 Tim Janik <timj@gtk.org>
+
+ * gtk/gtkctree.c (row_delete):
+ (gtk_ctree_node_set_row_data_full): fixed very evil reentrancy bugs with
+ destruction notifier, *always* update internal structures *before*
+ calling user code.
+
Sun Jan 30 20:10:52 2000 Lars Hamann <lars@gtk.org>
A few more fixes for bug #5487, #2051, #2677.
diff --git a/gtk/gtkctree.c b/gtk/gtkctree.c
index 7a4f5c180..931b3989e 100644
--- a/gtk/gtkctree.c
+++ b/gtk/gtkctree.c
@@ -3244,7 +3244,15 @@ row_delete (GtkCTree *ctree,
}
if (ctree_row->row.destroy)
- ctree_row->row.destroy (ctree_row->row.data);
+ {
+ GtkDestroyNotify dnotify = ctree_row->row.destroy;
+ gpointer ddata = ctree_row->row.data;
+
+ ctree_row->row.destroy = NULL;
+ ctree_row->row.data = NULL;
+
+ dnotify (ddata);
+ }
g_mem_chunk_free (clist->cell_mem_chunk, ctree_row->row.cell);
g_mem_chunk_free (clist->row_mem_chunk, ctree_row);
@@ -5175,15 +5183,21 @@ gtk_ctree_node_set_row_data_full (GtkCTree *ctree,
gpointer data,
GtkDestroyNotify destroy)
{
+ GtkDestroyNotify dnotify;
+ gpointer ddata;
+
g_return_if_fail (ctree != NULL);
g_return_if_fail (GTK_IS_CTREE (ctree));
g_return_if_fail (node != NULL);
- if (GTK_CTREE_ROW (node)->row.destroy)
- GTK_CTREE_ROW (node)->row.destroy (GTK_CTREE_ROW (node)->row.data);
+ dnotify = GTK_CTREE_ROW (node)->row.destroy;
+ ddata = GTK_CTREE_ROW (node)->row.data;
GTK_CTREE_ROW (node)->row.data = data;
GTK_CTREE_ROW (node)->row.destroy = destroy;
+
+ if (dnotify)
+ dnotify (ddata);
}
gpointer