diff options
author | Tim Janik <timj@gtk.org> | 2000-02-01 23:32:26 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 2000-02-01 23:32:26 +0000 |
commit | cec440f3e4841ba827d270a83dffec437fe75f5a (patch) | |
tree | 6cd916239a2ccc117275bf5994dbf5300b4a8f76 | |
parent | 255369aecb8b971aa5bda3c8fa3ce27c7109bc68 (diff) | |
download | gdk-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-- | ChangeLog | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 7 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 7 | ||||
-rw-r--r-- | gtk/gtkctree.c | 20 |
8 files changed, 66 insertions, 3 deletions
@@ -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 |