gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r1838 - in gnunet-gtk: . src/plugins/fs


From: grothoff
Subject: [GNUnet-SVN] r1838 - in gnunet-gtk: . src/plugins/fs
Date: Sun, 21 Aug 2005 20:09:49 -0700 (PDT)

Author: grothoff
Date: 2005-08-21 20:09:48 -0700 (Sun, 21 Aug 2005)
New Revision: 1838

Modified:
   gnunet-gtk/ChangeLog
   gnunet-gtk/src/plugins/fs/download.c
Log:
fix

Modified: gnunet-gtk/ChangeLog
===================================================================
--- gnunet-gtk/ChangeLog        2005-08-22 02:50:38 UTC (rev 1837)
+++ gnunet-gtk/ChangeLog        2005-08-22 03:09:48 UTC (rev 1838)
@@ -1,3 +1,6 @@
+Sun Aug 21 19:57:19 PDT 2005
+       Fixed deadlock in download abort code.
+
 Sun Aug 21 18:42:14 PDT 2005
        Fixed deadlock in gnunet-gtk shutdown.
        

Modified: gnunet-gtk/src/plugins/fs/download.c
===================================================================
--- gnunet-gtk/src/plugins/fs/download.c        2005-08-22 02:50:38 UTC (rev 
1837)
+++ gnunet-gtk/src/plugins/fs/download.c        2005-08-22 03:09:48 UTC (rev 
1838)
@@ -413,25 +413,16 @@
                               NULL);
 }
 
-static void * shutdownCode(void * it) {
-  GtkTreeModel * model;
-  GtkTreeIter * iter = it; 
+struct aDC_closure {
   struct ECRS_URI * u;
   char * fn;
+};
 
-  model = GTK_TREE_MODEL(summary);
-  gtk_tree_model_get(model,
-                    iter,
-                    DOWNLOAD_URI, &u,
-                    DOWNLOAD_FILENAME, &fn,
-                    -1);
+static void * shutdownCode(void * c) {
+  struct aDC_closure * cls = c;
   FSUI_stopDownload(ctx,
-                   u,
-                   fn);
-  gtk_tree_store_remove(summary,
-                       iter);
-  if (u != NULL)
-    ECRS_freeUri(u);  
+                   cls->u,
+                   cls->fn);
   return NULL;
 }
 
@@ -439,9 +430,20 @@
                                  GtkTreePath * path,
                                  GtkTreeIter * iter,
                                  GtkTreeStore * tree) {
+  struct aDC_closure cls;
+
   GNUNET_ASSERT(model == GTK_TREE_MODEL(summary));
+  gtk_tree_model_get(model,
+                    iter,
+                    DOWNLOAD_URI, &cls.u,
+                    DOWNLOAD_FILENAME, &cls.fn,
+                    -1);
+  gtk_tree_store_remove(summary,
+                       iter);
   run_with_save_calls(&shutdownCode,
-                     iter);
+                     &cls);
+  if (cls.u != NULL)
+    ECRS_freeUri(cls.u); 
 }
 
 void on_abortDownloadButton_clicked(void * unused,





reply via email to

[Prev in Thread] Current Thread [Next in Thread]