fix leak, improve API
authorNils Durner <durner@gnunet.org>
Mon, 9 Nov 2009 18:45:18 +0000 (18:45 +0000)
committerNils Durner <durner@gnunet.org>
Mon, 9 Nov 2009 18:45:18 +0000 (18:45 +0000)
src/include/gnunet_container_lib.h
src/util/common_allocation.c
src/util/container_slist.c
src/util/network.c
src/util/test_container_slist.c

index edda98e07ac8ae69bc3327b41033b1636243bbea..4debd2ccf1842378fb98646c85c26e55067199d3 100644 (file)
@@ -1010,6 +1010,13 @@ GNUNET_CONTAINER_slist_get (const struct GNUNET_CONTAINER_SList_Iterator *i,
                            size_t *len);
 
 
+/**
+ * Release an iterator
+ * @param i iterator
+ */
+void GNUNET_CONTAINER_slist_iter_destroy (struct GNUNET_CONTAINER_SList_Iterator *i);
+
+
 #if 0                           /* keep Emacsens' auto-indent happy */
 {
 #endif
index 4c1d53c2d87edf94bd398c8cace17ef4bf62272a..1e546b96240238981e0a560c29346c75f3e3086a 100644 (file)
@@ -31,7 +31,7 @@
 #define INT_MAX 0x7FFFFFFF
 #endif
 
-#ifdef MINGW
+#if 0
   #define W32_MEM_LIMIT 200000000
 #endif
 
index 4f5607a281e8ce484e2caf19154581a832180c1b..715dcee323c9553f1143284a2dd075e3403cfcf3 100644 (file)
@@ -332,4 +332,13 @@ GNUNET_CONTAINER_slist_get (const struct GNUNET_CONTAINER_SList_Iterator *i,
   return i->elem->elem;
 }
 
+/**
+ * Release an iterator
+ * @param i iterator
+ */
+void GNUNET_CONTAINER_slist_iter_destroy (struct GNUNET_CONTAINER_SList_Iterator *i)
+{
+  GNUNET_free (i);
+}
+
 /* end of container_slist.c */
index a16380736561bcba231eb052261c7169abacccac..361012d77811a88dbc4756f0156069ebf2fd684d 100644 (file)
@@ -666,6 +666,7 @@ GNUNET_NETWORK_fdset_copy (struct GNUNET_NETWORK_FDSet *to,
                                   GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT,
                                   handle, len);
     }
+  GNUNET_CONTAINER_slist_iter_destroy (iter);
 #endif /*  */
 }
 
@@ -954,6 +955,7 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
                   on_next = GNUNET_YES;
                 }
             }
+           GNUNET_CONTAINER_slist_iter_destroy (i);
         }
 
       /* Poll for faulty pipes */
@@ -982,6 +984,7 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
               else
                 on_next = GNUNET_NO;
             }
+          GNUNET_CONTAINER_slist_iter_destroy (i);
         }
 
       /* FIXME */
index bc134d26a858e58af42b22a14379509e16ee5376..3f3b489e91cb80d755a487ce6da3d6a3c7feaf98 100644 (file)
@@ -68,7 +68,7 @@ main (int argc, char *argv[])
                                      GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT,
                                      &j, sizeof (j));
     }
-  GNUNET_free (it);
+  GNUNET_CONTAINER_slist_iter_destroy (it);
   CHECK (GNUNET_CONTAINER_slist_count (l) == 200);
   i = 198;
   CHECK (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i)));
@@ -93,7 +93,7 @@ main (int argc, char *argv[])
 
       GNUNET_CONTAINER_slist_erase (it);
     }
-  GNUNET_free (it);
+  GNUNET_CONTAINER_slist_iter_destroy (it);
   CHECK (GNUNET_CONTAINER_slist_count (l) == 100);
   i = 99;
   CHECK (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i)) == GNUNET_NO);