remove g_dataset_global_lock around destroy() notification here as well.
authorSebastian Wilhelmi <wilhelmi@ira.uka.de>
Sun, 17 Oct 1999 16:04:49 +0000 (16:04 +0000)
committerTim Janik <timj@src.gnome.org>
Sun, 17 Oct 1999 16:04:49 +0000 (16:04 +0000)
Sun Oct 17 18:11:40 1999  Tim Janik  <timj@gtk.org>

        * gdataset.c (g_data_set_internal): remove g_dataset_global_lock around
        destroy() notification here as well.

1999-10-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

        * gdataset.c (g_datalist_clear_i): Avoid Freezing, when g_datalist
        is called recursivly. Reported by Ola Andersson <rand@ling.umu.se>.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdataset.c
glib/gdataset.c

index 5502212..d8eca43 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Sun Oct 17 18:11:40 1999  Tim Janik  <timj@gtk.org>
+
+        * gdataset.c (g_data_set_internal): remove g_dataset_global_lock around
+        destroy() notification here as well.
+
+1999-10-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+        * gdataset.c (g_datalist_clear_i): Avoid Freezing, when g_datalist
+        is called recursivly. Reported by Ola Andersson <rand@ling.umu.se>.
+
 Tue Oct 12 14:17:12 1999  Tim Janik  <timj@gtk.org>
 
        * glib.h: removed useless g_string(x) macro that cluttered the namespace
index 5502212..d8eca43 100644 (file)
@@ -1,3 +1,13 @@
+Sun Oct 17 18:11:40 1999  Tim Janik  <timj@gtk.org>
+
+        * gdataset.c (g_data_set_internal): remove g_dataset_global_lock around
+        destroy() notification here as well.
+
+1999-10-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+        * gdataset.c (g_datalist_clear_i): Avoid Freezing, when g_datalist
+        is called recursivly. Reported by Ola Andersson <rand@ling.umu.se>.
+
 Tue Oct 12 14:17:12 1999  Tim Janik  <timj@gtk.org>
 
        * glib.h: removed useless g_string(x) macro that cluttered the namespace
index 5502212..d8eca43 100644 (file)
@@ -1,3 +1,13 @@
+Sun Oct 17 18:11:40 1999  Tim Janik  <timj@gtk.org>
+
+        * gdataset.c (g_data_set_internal): remove g_dataset_global_lock around
+        destroy() notification here as well.
+
+1999-10-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+        * gdataset.c (g_datalist_clear_i): Avoid Freezing, when g_datalist
+        is called recursivly. Reported by Ola Andersson <rand@ling.umu.se>.
+
 Tue Oct 12 14:17:12 1999  Tim Janik  <timj@gtk.org>
 
        * glib.h: removed useless g_string(x) macro that cluttered the namespace
index 5502212..d8eca43 100644 (file)
@@ -1,3 +1,13 @@
+Sun Oct 17 18:11:40 1999  Tim Janik  <timj@gtk.org>
+
+        * gdataset.c (g_data_set_internal): remove g_dataset_global_lock around
+        destroy() notification here as well.
+
+1999-10-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+        * gdataset.c (g_datalist_clear_i): Avoid Freezing, when g_datalist
+        is called recursivly. Reported by Ola Andersson <rand@ling.umu.se>.
+
 Tue Oct 12 14:17:12 1999  Tim Janik  <timj@gtk.org>
 
        * glib.h: removed useless g_string(x) macro that cluttered the namespace
index 5502212..d8eca43 100644 (file)
@@ -1,3 +1,13 @@
+Sun Oct 17 18:11:40 1999  Tim Janik  <timj@gtk.org>
+
+        * gdataset.c (g_data_set_internal): remove g_dataset_global_lock around
+        destroy() notification here as well.
+
+1999-10-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+        * gdataset.c (g_datalist_clear_i): Avoid Freezing, when g_datalist
+        is called recursivly. Reported by Ola Andersson <rand@ling.umu.se>.
+
 Tue Oct 12 14:17:12 1999  Tim Janik  <timj@gtk.org>
 
        * glib.h: removed useless g_string(x) macro that cluttered the namespace
index 5502212..d8eca43 100644 (file)
@@ -1,3 +1,13 @@
+Sun Oct 17 18:11:40 1999  Tim Janik  <timj@gtk.org>
+
+        * gdataset.c (g_data_set_internal): remove g_dataset_global_lock around
+        destroy() notification here as well.
+
+1999-10-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+        * gdataset.c (g_datalist_clear_i): Avoid Freezing, when g_datalist
+        is called recursivly. Reported by Ola Andersson <rand@ling.umu.se>.
+
 Tue Oct 12 14:17:12 1999  Tim Janik  <timj@gtk.org>
 
        * glib.h: removed useless g_string(x) macro that cluttered the namespace
index 5502212..d8eca43 100644 (file)
@@ -1,3 +1,13 @@
+Sun Oct 17 18:11:40 1999  Tim Janik  <timj@gtk.org>
+
+        * gdataset.c (g_data_set_internal): remove g_dataset_global_lock around
+        destroy() notification here as well.
+
+1999-10-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+        * gdataset.c (g_datalist_clear_i): Avoid Freezing, when g_datalist
+        is called recursivly. Reported by Ola Andersson <rand@ling.umu.se>.
+
 Tue Oct 12 14:17:12 1999  Tim Janik  <timj@gtk.org>
 
        * glib.h: removed useless g_string(x) macro that cluttered the namespace
index 5502212..d8eca43 100644 (file)
@@ -1,3 +1,13 @@
+Sun Oct 17 18:11:40 1999  Tim Janik  <timj@gtk.org>
+
+        * gdataset.c (g_data_set_internal): remove g_dataset_global_lock around
+        destroy() notification here as well.
+
+1999-10-15  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+        * gdataset.c (g_datalist_clear_i): Avoid Freezing, when g_datalist
+        is called recursivly. Reported by Ola Andersson <rand@ling.umu.se>.
+
 Tue Oct 12 14:17:12 1999  Tim Janik  <timj@gtk.org>
 
        * glib.h: removed useless g_string(x) macro that cluttered the namespace
index b35c911..2aa4032 100644 (file)
@@ -110,7 +110,11 @@ g_datalist_clear_i (GData **datalist)
       list = prev->next;
       
       if (prev->destroy_func)
-       prev->destroy_func (prev->data);
+       {
+         G_UNLOCK (g_dataset_global);
+         prev->destroy_func (prev->data);
+         G_LOCK (g_dataset_global);
+       }
       
       if (g_data_cache_length < G_DATA_CACHE_MAX)
        {
@@ -233,7 +237,11 @@ g_data_set_internal (GData   **datalist,
               * data without destroy notification
               */
              if (list->destroy_func && !destroy_func)
-               list->destroy_func (list->data);
+               {
+                 G_UNLOCK (g_dataset_global);
+                 list->destroy_func (list->data);
+                 G_LOCK (g_dataset_global);
+               }
              
              if (g_data_cache_length < G_DATA_CACHE_MAX)
                {
@@ -275,7 +283,9 @@ g_data_set_internal (GData    **datalist,
                  /* we need to have updated all structures prior to
                   * invokation of the destroy function
                   */
+                 G_UNLOCK (g_dataset_global);
                  dfunc (ddata);
+                 G_LOCK (g_dataset_global);
                }
              
              return;
index b35c911..2aa4032 100644 (file)
@@ -110,7 +110,11 @@ g_datalist_clear_i (GData **datalist)
       list = prev->next;
       
       if (prev->destroy_func)
-       prev->destroy_func (prev->data);
+       {
+         G_UNLOCK (g_dataset_global);
+         prev->destroy_func (prev->data);
+         G_LOCK (g_dataset_global);
+       }
       
       if (g_data_cache_length < G_DATA_CACHE_MAX)
        {
@@ -233,7 +237,11 @@ g_data_set_internal (GData   **datalist,
               * data without destroy notification
               */
              if (list->destroy_func && !destroy_func)
-               list->destroy_func (list->data);
+               {
+                 G_UNLOCK (g_dataset_global);
+                 list->destroy_func (list->data);
+                 G_LOCK (g_dataset_global);
+               }
              
              if (g_data_cache_length < G_DATA_CACHE_MAX)
                {
@@ -275,7 +283,9 @@ g_data_set_internal (GData    **datalist,
                  /* we need to have updated all structures prior to
                   * invokation of the destroy function
                   */
+                 G_UNLOCK (g_dataset_global);
                  dfunc (ddata);
+                 G_LOCK (g_dataset_global);
                }
              
              return;