dhtlog updates
[oweals/gnunet.git] / src / util / test_container_slist.c
index a78b4ed5678f64c8818506beb23e1b2251810c5f..af3c3f39a318d62e078d423d31b9403bc2e8c4b1 100644 (file)
@@ -28,8 +28,7 @@
 #include "gnunet_common.h"
 #include "gnunet_container_lib.h"
 
-#define ABORT() { fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); return 1; }
-#define CHECK(c) { if (! (c)) ABORT(); }
+#define CHECK(c) do { if (! (c)) { fprintf(stderr, "Error at %s:%d\n", __FILE__, __LINE__); GNUNET_CONTAINER_slist_destroy (l); return 1; } } while (0)
 
 int
 main (int argc, char *argv[])
@@ -37,6 +36,7 @@ main (int argc, char *argv[])
   struct GNUNET_CONTAINER_SList *l;
   struct GNUNET_CONTAINER_SList_Iterator *it;
   unsigned int i;
+  int *ip;
   unsigned int j;
   size_t s;
   const void *p;
@@ -58,11 +58,14 @@ main (int argc, char *argv[])
        GNUNET_CONTAINER_slist_next (it), i--)
     {
       p = GNUNET_CONTAINER_slist_get (it, &s);
-      CHECK (p != NULL);
-      j = *(int *) p;
-      CHECK (i == j);
-      CHECK (s == sizeof (i));
 
+      if ( (p == NULL) ||
+          (i != (j = *(int *) p)) ||
+          (s != sizeof (i)) )
+       {
+         GNUNET_CONTAINER_slist_iter_destroy (it);
+         CHECK (0);
+       }
       j *= 2;
       GNUNET_CONTAINER_slist_insert (it,
                                      GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT,
@@ -117,9 +120,13 @@ main (int argc, char *argv[])
   l = GNUNET_CONTAINER_slist_create ();
   
   for (i = 0; i < 100; i++)
-    GNUNET_CONTAINER_slist_add (l,
-                               GNUNET_CONTAINER_SLIST_DISPOSITION_DYNAMIC,
-                                &i, sizeof (i));
+    {
+      ip = GNUNET_malloc (sizeof (int));
+      *ip = i;
+      GNUNET_CONTAINER_slist_add (l,
+                                 GNUNET_CONTAINER_SLIST_DISPOSITION_DYNAMIC,
+                                 ip, sizeof (int));
+    }
   //creat_add
   it = GNUNET_CONTAINER_slist_begin (l);
   p = GNUNET_CONTAINER_slist_get (it, &s);
@@ -127,11 +134,12 @@ main (int argc, char *argv[])
   //slist_erase
   CHECK (GNUNET_CONTAINER_slist_next (it) == GNUNET_YES); 
   GNUNET_CONTAINER_slist_erase (it);
+  GNUNET_CONTAINER_slist_iter_destroy (it);
   CHECK (GNUNET_CONTAINER_slist_count (l) == 99);
   //slist_clear
   GNUNET_CONTAINER_slist_clear(l);
   CHECK (GNUNET_CONTAINER_slist_count (l) == 0);
-  
+  GNUNET_CONTAINER_slist_destroy (l);
 
   return 0;
 }