gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r26314 - gnunet-gtk/src/fs


From: gnunet
Subject: [GNUnet-SVN] r26314 - gnunet-gtk/src/fs
Date: Tue, 5 Mar 2013 07:04:22 +0100

Author: LRN
Date: 2013-03-05 07:04:22 +0100 (Tue, 05 Mar 2013)
New Revision: 26314

Modified:
   gnunet-gtk/src/fs/gnunet-fs-gtk_namespace_manager.c
Log:
Be more careful with liststore contents

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk_namespace_manager.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk_namespace_manager.c 2013-03-05 04:53:22 UTC 
(rev 26313)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk_namespace_manager.c 2013-03-05 06:04:22 UTC 
(rev 26314)
@@ -211,21 +211,29 @@
       GNUNET_GTK_KNOWN_NAMESPACES_ORDER_ROW_REFERENCE_COLUMN, &order_row,
       GNUNET_GTK_KNOWN_NAMESPACES_METADATA_COLUMN, &md,
       -1);
+  /* Make sure the store does not contain references to freed objects */
+  gtk_list_store_set (ctx->known_ns_store, &iter,
+      GNUNET_GTK_KNOWN_NAMESPACES_IDENTIFIER_BIN_COLUMN, NULL,
+      GNUNET_GTK_KNOWN_NAMESPACES_ORDER_ROW_REFERENCE_COLUMN, NULL,
+      GNUNET_GTK_KNOWN_NAMESPACES_METADATA_COLUMN, NULL,
+      -1);
   GNUNET_CONTAINER_meta_data_destroy (md);
-  gtk_list_store_remove (ctx->known_ns_store, &iter);
   if (order_row != NULL)
   {
     if (GNUNET_OK == GNUNET_GTK_get_iter_from_reference (order_row, &iter))
     {
       gtk_tree_model_get (GTK_TREE_MODEL (ctx->ns_order_store), &iter,
         GNUNET_GTK_NAMESPACE_ORDER_KNOWN_ROW_REFERENCE_COLUMN, &known_row, -1);
-      gtk_list_store_remove (ctx->ns_order_store, &iter);
+      gtk_list_store_set (ctx->ns_order_store, &iter,
+        GNUNET_GTK_NAMESPACE_ORDER_KNOWN_ROW_REFERENCE_COLUMN, NULL, -1);
       if (known_row != NULL)
         gtk_tree_row_reference_free (known_row);
+      gtk_list_store_remove (ctx->ns_order_store, &iter);
     }
     gtk_tree_row_reference_free (order_row);
   }
-  GNUNET_free (nsid);
+  GNUNET_free_non_null (nsid);
+  gtk_list_store_remove (ctx->known_ns_store, &iter);
 
   gtk_list_store_clear (ctx->ns_details_store);
   GNUNET_CONTAINER_meta_data_destroy (ctx->uneditable_md);
@@ -703,6 +711,12 @@
         GNUNET_GTK_KNOWN_NAMESPACES_ORDER_ROW_REFERENCE_COLUMN, &order_row,
         GNUNET_GTK_KNOWN_NAMESPACES_METADATA_COLUMN, &md,
         -1);
+    /* Make sure the store does not contain references to freed objects */
+    gtk_list_store_set (ctx->known_ns_store, &iter,
+        GNUNET_GTK_KNOWN_NAMESPACES_IDENTIFIER_BIN_COLUMN, NULL,
+        GNUNET_GTK_KNOWN_NAMESPACES_ORDER_ROW_REFERENCE_COLUMN, NULL,
+        GNUNET_GTK_KNOWN_NAMESPACES_METADATA_COLUMN, NULL,
+        -1);
     if (order_row != NULL)
     {
       GtkTreeIter order_iter;
@@ -885,8 +899,11 @@
     ctx->uneditable_md = GNUNET_CONTAINER_meta_data_create ();
   gtk_list_store_clear (ctx->ns_details_store);
   gtk_widget_set_sensitive (ctx->details_apply_button, FALSE);
-  GNUNET_CONTAINER_meta_data_iterate ((const struct GNUNET_CONTAINER_MetaData 
*) md,
-      populate_details_list, ctx);
+  if (NULL != md)
+    GNUNET_CONTAINER_meta_data_iterate ((const struct 
GNUNET_CONTAINER_MetaData *) md,
+        populate_details_list, ctx);
+  else
+    GNUNET_break (0);
   gtk_widget_set_sensitive (ctx->details_apply_button, FALSE);
 }
 




reply via email to

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