aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-10-14 07:22:42 +0000
committerChristian Grothoff <christian@grothoff.org>2011-10-14 07:22:42 +0000
commit662b5736c37e8cf2b3e6aa5af53cef0d03b743ab (patch)
treec4299637a2db19a3e87957645d5aa58e196da43f
parent94aa63cb17777332095a1de0a70382a49e10fecb (diff)
downloadgnunet-662b5736c37e8cf2b3e6aa5af53cef0d03b743ab.tar.gz
gnunet-662b5736c37e8cf2b3e6aa5af53cef0d03b743ab.zip
LRN loves slist: Use stack allocation for slist iterator
-rw-r--r--src/include/gnunet_container_lib.h25
-rw-r--r--src/util/container_slist.c44
-rw-r--r--src/util/network.c63
-rw-r--r--src/util/test_container_slist.c42
4 files changed, 80 insertions, 94 deletions
diff --git a/src/include/gnunet_container_lib.h b/src/include/gnunet_container_lib.h
index 0c7f60a7a..75443b6ae 100644
--- a/src/include/gnunet_container_lib.h
+++ b/src/include/gnunet_container_lib.h
@@ -1054,7 +1054,24 @@ struct GNUNET_CONTAINER_SList;
1054/** 1054/**
1055 * Handle to a singly linked list iterator 1055 * Handle to a singly linked list iterator
1056 */ 1056 */
1057struct GNUNET_CONTAINER_SList_Iterator; 1057struct GNUNET_CONTAINER_SList_Iterator
1058{
1059 /**
1060 * Linked list that we are iterating over.
1061 */
1062 struct GNUNET_CONTAINER_SList *list;
1063
1064 /**
1065 * Last element accessed.
1066 */
1067 struct GNUNET_CONTAINER_SList_Elem *last;
1068
1069 /**
1070 * Current list element.
1071 */
1072 struct GNUNET_CONTAINER_SList_Elem *elem;
1073};
1074
1058 1075
1059 1076
1060/** 1077/**
@@ -1113,9 +1130,11 @@ GNUNET_CONTAINER_slist_destroy (struct GNUNET_CONTAINER_SList *l);
1113 * Return the beginning of a list 1130 * Return the beginning of a list
1114 * 1131 *
1115 * @param l list 1132 * @param l list
1116 * @return iterator pointing to the beginning, free using "GNUNET_free" 1133 * @return iterator pointing to the beginning (by value! Either allocate the
1134 * structure on the stack, or use GNUNET_malloc() yourself! All other
1135 * functions do take pointer to this struct though)
1117 */ 1136 */
1118struct GNUNET_CONTAINER_SList_Iterator * 1137struct GNUNET_CONTAINER_SList_Iterator
1119GNUNET_CONTAINER_slist_begin (struct GNUNET_CONTAINER_SList *l); 1138GNUNET_CONTAINER_slist_begin (struct GNUNET_CONTAINER_SList *l);
1120 1139
1121 1140
diff --git a/src/util/container_slist.c b/src/util/container_slist.c
index 144d352ce..2704713d4 100644
--- a/src/util/container_slist.c
+++ b/src/util/container_slist.c
@@ -78,27 +78,6 @@ struct GNUNET_CONTAINER_SList
78}; 78};
79 79
80 80
81/**
82 * Handle to a singly linked list iterator
83 */
84struct GNUNET_CONTAINER_SList_Iterator
85{
86 /**
87 * Linked list that we are iterating over.
88 */
89 struct GNUNET_CONTAINER_SList *list;
90
91 /**
92 * Last element accessed.
93 */
94 struct GNUNET_CONTAINER_SList_Elem *last;
95
96 /**
97 * Current list element.
98 */
99 struct GNUNET_CONTAINER_SList_Elem *elem;
100};
101
102 81
103/** 82/**
104 * Create a new element that is to be inserted into the list 83 * Create a new element that is to be inserted into the list
@@ -186,22 +165,22 @@ void
186GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst, 165GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst,
187 struct GNUNET_CONTAINER_SList *src) 166 struct GNUNET_CONTAINER_SList *src)
188{ 167{
189 struct GNUNET_CONTAINER_SList_Iterator *i; 168 struct GNUNET_CONTAINER_SList_Iterator i;
190 169
191 for (i = GNUNET_CONTAINER_slist_begin (src); 170 for (i = GNUNET_CONTAINER_slist_begin (src);
192 GNUNET_CONTAINER_slist_end (i) != GNUNET_YES; 171 GNUNET_CONTAINER_slist_end (&i) != GNUNET_YES;
193 GNUNET_CONTAINER_slist_next (i)) 172 GNUNET_CONTAINER_slist_next (&i))
194 173
195 { 174 {
196 GNUNET_CONTAINER_slist_add (dst, 175 GNUNET_CONTAINER_slist_add (dst,
197 (i->elem->disp == 176 (i.elem->disp ==
198 GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC) 177 GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC)
199 ? GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC 178 ? GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC
200 : 179 :
201 GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, 180 GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT,
202 i->elem->elem, i->elem->len); 181 i.elem->elem, i.elem->len);
203 } 182 }
204 GNUNET_CONTAINER_slist_iter_destroy (i); 183 GNUNET_CONTAINER_slist_iter_destroy (&i);
205} 184}
206 185
207 186
@@ -233,14 +212,14 @@ GNUNET_CONTAINER_slist_destroy (struct GNUNET_CONTAINER_SList *l)
233 * @param l list 212 * @param l list
234 * @return iterator pointing to the beginning 213 * @return iterator pointing to the beginning
235 */ 214 */
236struct GNUNET_CONTAINER_SList_Iterator * 215struct GNUNET_CONTAINER_SList_Iterator
237GNUNET_CONTAINER_slist_begin (struct GNUNET_CONTAINER_SList *l) 216GNUNET_CONTAINER_slist_begin (struct GNUNET_CONTAINER_SList *l)
238{ 217{
239 struct GNUNET_CONTAINER_SList_Iterator *ret; 218 struct GNUNET_CONTAINER_SList_Iterator ret;
240 219
241 ret = GNUNET_malloc (sizeof (struct GNUNET_CONTAINER_SList_Iterator)); 220 memset (&ret, 0, sizeof (ret));
242 ret->elem = l->head; 221 ret.elem = l->head;
243 ret->list = l; 222 ret.list = l;
244 return ret; 223 return ret;
245} 224}
246 225
@@ -405,7 +384,6 @@ void
405GNUNET_CONTAINER_slist_iter_destroy (struct GNUNET_CONTAINER_SList_Iterator 384GNUNET_CONTAINER_slist_iter_destroy (struct GNUNET_CONTAINER_SList_Iterator
406 *i) 385 *i)
407{ 386{
408 GNUNET_free (i);
409} 387}
410 388
411/* end of container_slist.c */ 389/* end of container_slist.c */
diff --git a/src/util/network.c b/src/util/network.c
index fa097dff4..3085d271f 100644
--- a/src/util/network.c
+++ b/src/util/network.c
@@ -1010,7 +1010,7 @@ GNUNET_NETWORK_fdset_overlap (const struct GNUNET_NETWORK_FDSet *fds1,
1010 return GNUNET_YES; 1010 return GNUNET_YES;
1011 } 1011 }
1012#else 1012#else
1013 struct GNUNET_CONTAINER_SList_Iterator *it; 1013 struct GNUNET_CONTAINER_SList_Iterator it;
1014 struct GNUNET_DISK_FileHandle *h; 1014 struct GNUNET_DISK_FileHandle *h;
1015 int i; 1015 int i;
1016 int j; 1016 int j;
@@ -1027,25 +1027,25 @@ GNUNET_NETWORK_fdset_overlap (const struct GNUNET_NETWORK_FDSet *fds1,
1027 } 1027 }
1028 } 1028 }
1029 it = GNUNET_CONTAINER_slist_begin (fds1->handles); 1029 it = GNUNET_CONTAINER_slist_begin (fds1->handles);
1030 while (GNUNET_CONTAINER_slist_end (it) != GNUNET_YES) 1030 while (GNUNET_CONTAINER_slist_end (&it) != GNUNET_YES)
1031 { 1031 {
1032#if DEBUG_NETWORK 1032#if DEBUG_NETWORK
1033 struct GNUNET_CONTAINER_SList_Iterator *t; 1033 struct GNUNET_CONTAINER_SList_Iterator t;
1034#endif 1034#endif
1035 h = 1035 h =
1036 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (it, 1036 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (&it,
1037 NULL); 1037 NULL);
1038#if DEBUG_NETWORK 1038#if DEBUG_NETWORK
1039 LOG (GNUNET_ERROR_TYPE_DEBUG, 1039 LOG (GNUNET_ERROR_TYPE_DEBUG,
1040 "Checking that FD 0x%x is in another set:\n", h->h); 1040 "Checking that FD 0x%x is in another set:\n", h->h);
1041 for (t = GNUNET_CONTAINER_slist_begin (fds2->handles); 1041 for (t = GNUNET_CONTAINER_slist_begin (fds2->handles);
1042 GNUNET_CONTAINER_slist_end (t) != GNUNET_YES; 1042 GNUNET_CONTAINER_slist_end (&t) != GNUNET_YES;
1043 GNUNET_CONTAINER_slist_next (t)) 1043 GNUNET_CONTAINER_slist_next (&t))
1044 { 1044 {
1045 struct GNUNET_DISK_FileHandle *fh; 1045 struct GNUNET_DISK_FileHandle *fh;
1046 1046
1047 fh = 1047 fh =
1048 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (t, 1048 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (&t,
1049 NULL); 1049 NULL);
1050 LOG (GNUNET_ERROR_TYPE_DEBUG, "0x%x\n", fh->h); 1050 LOG (GNUNET_ERROR_TYPE_DEBUG, "0x%x\n", fh->h);
1051 } 1051 }
@@ -1056,12 +1056,10 @@ GNUNET_NETWORK_fdset_overlap (const struct GNUNET_NETWORK_FDSet *fds1,
1056#if DEBUG_NETWORK 1056#if DEBUG_NETWORK
1057 LOG (GNUNET_ERROR_TYPE_DEBUG, "Match!\n"); 1057 LOG (GNUNET_ERROR_TYPE_DEBUG, "Match!\n");
1058#endif 1058#endif
1059 GNUNET_CONTAINER_slist_iter_destroy (it);
1060 return GNUNET_YES; 1059 return GNUNET_YES;
1061 } 1060 }
1062 GNUNET_CONTAINER_slist_next (it); 1061 GNUNET_CONTAINER_slist_next (&it);
1063 } 1062 }
1064 GNUNET_CONTAINER_slist_iter_destroy (it);
1065#endif 1063#endif
1066 return GNUNET_NO; 1064 return GNUNET_NO;
1067} 1065}
@@ -1161,21 +1159,20 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1161 handles += read_handles = GNUNET_CONTAINER_slist_count (rfds->handles); 1159 handles += read_handles = GNUNET_CONTAINER_slist_count (rfds->handles);
1162#if DEBUG_NETWORK 1160#if DEBUG_NETWORK
1163 { 1161 {
1164 struct GNUNET_CONTAINER_SList_Iterator *t; 1162 struct GNUNET_CONTAINER_SList_Iterator t;
1165 1163
1166 for (t = GNUNET_CONTAINER_slist_begin (rfds->handles); 1164 for (t = GNUNET_CONTAINER_slist_begin (rfds->handles);
1167 GNUNET_CONTAINER_slist_end (t) != GNUNET_YES; 1165 GNUNET_CONTAINER_slist_end (&t) != GNUNET_YES;
1168 GNUNET_CONTAINER_slist_next (t)) 1166 GNUNET_CONTAINER_slist_next (&t))
1169 { 1167 {
1170 struct GNUNET_DISK_FileHandle *fh; 1168 struct GNUNET_DISK_FileHandle *fh;
1171 1169
1172 fh = 1170 fh =
1173 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (t, 1171 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (&t,
1174 NULL); 1172 NULL);
1175 LOG (GNUNET_ERROR_TYPE_DEBUG, "FD 0x%x (0x%x) is SET in rfds\n", 1173 LOG (GNUNET_ERROR_TYPE_DEBUG, "FD 0x%x (0x%x) is SET in rfds\n",
1176 fh->h, fh); 1174 fh->h, fh);
1177 } 1175 }
1178 GNUNET_CONTAINER_slist_iter_destroy (t);
1179 } 1176 }
1180#endif 1177#endif
1181#endif 1178#endif
@@ -1291,16 +1288,16 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1291 /* Read Pipes */ 1288 /* Read Pipes */
1292 if (rfds && read_handles) 1289 if (rfds && read_handles)
1293 { 1290 {
1294 struct GNUNET_CONTAINER_SList_Iterator *i; 1291 struct GNUNET_CONTAINER_SList_Iterator i;
1295 1292
1296 for (i = GNUNET_CONTAINER_slist_begin (rfds->handles); 1293 for (i = GNUNET_CONTAINER_slist_begin (rfds->handles);
1297 GNUNET_CONTAINER_slist_end (i) != GNUNET_YES; 1294 GNUNET_CONTAINER_slist_end (&i) != GNUNET_YES;
1298 GNUNET_CONTAINER_slist_next (i)) 1295 GNUNET_CONTAINER_slist_next (&i))
1299 { 1296 {
1300 struct GNUNET_DISK_FileHandle *fh; 1297 struct GNUNET_DISK_FileHandle *fh;
1301 1298
1302 fh = 1299 fh =
1303 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (i, 1300 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (&i,
1304 NULL); 1301 NULL);
1305 if (fh->type == GNUNET_PIPE) 1302 if (fh->type == GNUNET_PIPE)
1306 { 1303 {
@@ -1350,7 +1347,6 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1350 GNUNET_DISK_FileHandle)); 1347 GNUNET_DISK_FileHandle));
1351 } 1348 }
1352 } 1349 }
1353 GNUNET_CONTAINER_slist_iter_destroy (i);
1354 } 1350 }
1355 if (wfds && write_handles) 1351 if (wfds && write_handles)
1356 { 1352 {
@@ -1363,17 +1359,17 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1363 } 1359 }
1364 if (efds && ex_handles) 1360 if (efds && ex_handles)
1365 { 1361 {
1366 struct GNUNET_CONTAINER_SList_Iterator *i; 1362 struct GNUNET_CONTAINER_SList_Iterator i;
1367 1363
1368 for (i = GNUNET_CONTAINER_slist_begin (efds->handles); 1364 for (i = GNUNET_CONTAINER_slist_begin (efds->handles);
1369 GNUNET_CONTAINER_slist_end (i) != GNUNET_YES; 1365 GNUNET_CONTAINER_slist_end (&i) != GNUNET_YES;
1370 GNUNET_CONTAINER_slist_next (i)) 1366 GNUNET_CONTAINER_slist_next (&i))
1371 { 1367 {
1372 struct GNUNET_DISK_FileHandle *fh; 1368 struct GNUNET_DISK_FileHandle *fh;
1373 DWORD dwBytes; 1369 DWORD dwBytes;
1374 1370
1375 fh = 1371 fh =
1376 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (i, 1372 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (&i,
1377 NULL); 1373 NULL);
1378 if (fh->type == GNUNET_PIPE) 1374 if (fh->type == GNUNET_PIPE)
1379 { 1375 {
@@ -1388,7 +1384,6 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1388 } 1384 }
1389 } 1385 }
1390 } 1386 }
1391 GNUNET_CONTAINER_slist_iter_destroy (i);
1392 } 1387 }
1393 if (nfds > 0) 1388 if (nfds > 0)
1394 { 1389 {
@@ -1610,7 +1605,7 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1610#endif 1605#endif
1611 if (rfds) 1606 if (rfds)
1612 { 1607 {
1613 struct GNUNET_CONTAINER_SList_Iterator *t; 1608 struct GNUNET_CONTAINER_SList_Iterator t;
1614 1609
1615 for (i = 0; i < rfds->sds.fd_count; i++) 1610 for (i = 0; i < rfds->sds.fd_count; i++)
1616 { 1611 {
@@ -1618,20 +1613,19 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1618 nsock++; 1613 nsock++;
1619 } 1614 }
1620 for (t = GNUNET_CONTAINER_slist_begin (rfds->handles); 1615 for (t = GNUNET_CONTAINER_slist_begin (rfds->handles);
1621 GNUNET_CONTAINER_slist_end (t) != GNUNET_YES; 1616 GNUNET_CONTAINER_slist_end (&t) != GNUNET_YES;
1622 GNUNET_CONTAINER_slist_next (t)) 1617 GNUNET_CONTAINER_slist_next (&t))
1623 { 1618 {
1624 struct GNUNET_DISK_FileHandle *fh; 1619 struct GNUNET_DISK_FileHandle *fh;
1625 1620
1626 fh = 1621 fh =
1627 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (t, 1622 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (&t,
1628 NULL); 1623 NULL);
1629 if (fh->type == GNUNET_PIPE) 1624 if (fh->type == GNUNET_PIPE)
1630 { 1625 {
1631 CancelIo (fh->h); 1626 CancelIo (fh->h);
1632 } 1627 }
1633 } 1628 }
1634 GNUNET_CONTAINER_slist_iter_destroy (t);
1635#if DEBUG_NETWORK 1629#if DEBUG_NETWORK
1636 LOG (GNUNET_ERROR_TYPE_DEBUG, "Zeroing rfds\n"); 1630 LOG (GNUNET_ERROR_TYPE_DEBUG, "Zeroing rfds\n");
1637#endif 1631#endif
@@ -1676,7 +1670,7 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1676#if DEBUG_NETWORK 1670#if DEBUG_NETWORK
1677 if (rfds) 1671 if (rfds)
1678 { 1672 {
1679 struct GNUNET_CONTAINER_SList_Iterator *t; 1673 struct GNUNET_CONTAINER_SList_Iterator t;
1680 1674
1681 for (i = 0; i < bread.fd_count; i++) 1675 for (i = 0; i < bread.fd_count; i++)
1682 { 1676 {
@@ -1687,17 +1681,16 @@ GNUNET_NETWORK_socket_select (struct GNUNET_NETWORK_FDSet *rfds,
1687 "NOT SET"); 1681 "NOT SET");
1688 } 1682 }
1689 for (t = GNUNET_CONTAINER_slist_begin (rfds->handles); 1683 for (t = GNUNET_CONTAINER_slist_begin (rfds->handles);
1690 GNUNET_CONTAINER_slist_end (t) != GNUNET_YES; 1684 GNUNET_CONTAINER_slist_end (&t) != GNUNET_YES;
1691 GNUNET_CONTAINER_slist_next (t)) 1685 GNUNET_CONTAINER_slist_next (&t))
1692 { 1686 {
1693 struct GNUNET_DISK_FileHandle *fh; 1687 struct GNUNET_DISK_FileHandle *fh;
1694 1688
1695 fh = 1689 fh =
1696 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (t, 1690 (struct GNUNET_DISK_FileHandle *) GNUNET_CONTAINER_slist_get (&t,
1697 NULL); 1691 NULL);
1698 LOG (GNUNET_ERROR_TYPE_DEBUG, "FD 0x%x is SET in rfds\n", fh->h); 1692 LOG (GNUNET_ERROR_TYPE_DEBUG, "FD 0x%x is SET in rfds\n", fh->h);
1699 } 1693 }
1700 GNUNET_CONTAINER_slist_iter_destroy (t);
1701 } 1694 }
1702 if (wfds) 1695 if (wfds)
1703 { 1696 {
diff --git a/src/util/test_container_slist.c b/src/util/test_container_slist.c
index 307a6b248..394dc4cdb 100644
--- a/src/util/test_container_slist.c
+++ b/src/util/test_container_slist.c
@@ -32,7 +32,7 @@ int
32main (int argc, char *argv[]) 32main (int argc, char *argv[])
33{ 33{
34 struct GNUNET_CONTAINER_SList *l; 34 struct GNUNET_CONTAINER_SList *l;
35 struct GNUNET_CONTAINER_SList_Iterator *it; 35 struct GNUNET_CONTAINER_SList_Iterator it;
36 unsigned int i; 36 unsigned int i;
37 int *ip; 37 int *ip;
38 unsigned int j; 38 unsigned int j;
@@ -52,47 +52,45 @@ main (int argc, char *argv[])
52 GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 100); 52 GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 100);
53 53
54 for (it = GNUNET_CONTAINER_slist_begin (l), i = 99; 54 for (it = GNUNET_CONTAINER_slist_begin (l), i = 99;
55 GNUNET_CONTAINER_slist_end (it) != GNUNET_YES; 55 GNUNET_CONTAINER_slist_end (&it) != GNUNET_YES;
56 GNUNET_CONTAINER_slist_next (it), i--) 56 GNUNET_CONTAINER_slist_next (&it), i--)
57 { 57 {
58 p = GNUNET_CONTAINER_slist_get (it, &s); 58 p = GNUNET_CONTAINER_slist_get (&it, &s);
59 59
60 if ((p == NULL) || (i != (j = *(int *) p)) || (s != sizeof (i))) 60 if ((p == NULL) || (i != (j = *(int *) p)) || (s != sizeof (i)))
61 { 61 {
62 GNUNET_CONTAINER_slist_iter_destroy (it); 62 GNUNET_CONTAINER_slist_iter_destroy (&it);
63 GNUNET_assert (0); 63 GNUNET_assert (0);
64 } 64 }
65 j *= 2; 65 j *= 2;
66 GNUNET_CONTAINER_slist_insert (it, 66 GNUNET_CONTAINER_slist_insert (&it,
67 GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, 67 GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT,
68 &j, sizeof (j)); 68 &j, sizeof (j));
69 } 69 }
70 GNUNET_CONTAINER_slist_iter_destroy (it);
71 GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 200); 70 GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 200);
72 i = 198; 71 i = 198;
73 GNUNET_assert (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i))); 72 GNUNET_assert (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i)));
74 73
75 for (it = GNUNET_CONTAINER_slist_begin (l); 74 for (it = GNUNET_CONTAINER_slist_begin (l);
76 GNUNET_CONTAINER_slist_end (it) != GNUNET_YES;) 75 GNUNET_CONTAINER_slist_end (&it) != GNUNET_YES;)
77 { 76 {
78 p = GNUNET_CONTAINER_slist_get (it, &s); 77 p = GNUNET_CONTAINER_slist_get (&it, &s);
79 GNUNET_assert (p != NULL); 78 GNUNET_assert (p != NULL);
80 GNUNET_assert (s == sizeof (i)); 79 GNUNET_assert (s == sizeof (i));
81 i = *(int *) p; 80 i = *(int *) p;
82 81
83 GNUNET_assert (GNUNET_CONTAINER_slist_next (it) == GNUNET_YES); 82 GNUNET_assert (GNUNET_CONTAINER_slist_next (&it) == GNUNET_YES);
84 GNUNET_assert (GNUNET_CONTAINER_slist_end (it) != GNUNET_YES); 83 GNUNET_assert (GNUNET_CONTAINER_slist_end (&it) != GNUNET_YES);
85 84
86 p = GNUNET_CONTAINER_slist_get (it, &s); 85 p = GNUNET_CONTAINER_slist_get (&it, &s);
87 GNUNET_assert (p != NULL); 86 GNUNET_assert (p != NULL);
88 GNUNET_assert (s == sizeof (j)); 87 GNUNET_assert (s == sizeof (j));
89 j = *(int *) p; 88 j = *(int *) p;
90 89
91 GNUNET_assert (j * 2 == i); 90 GNUNET_assert (j * 2 == i);
92 91
93 GNUNET_CONTAINER_slist_erase (it); 92 GNUNET_CONTAINER_slist_erase (&it);
94 } 93 }
95 GNUNET_CONTAINER_slist_iter_destroy (it);
96 GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 100); 94 GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 100);
97 i = 99; 95 i = 99;
98 GNUNET_assert (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i)) == 96 GNUNET_assert (GNUNET_CONTAINER_slist_contains (l, &i, sizeof (i)) ==
@@ -124,18 +122,16 @@ main (int argc, char *argv[])
124 GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 100); 122 GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 100);
125 123
126 for (it = GNUNET_CONTAINER_slist_begin (l), i = 0; 124 for (it = GNUNET_CONTAINER_slist_begin (l), i = 0;
127 GNUNET_CONTAINER_slist_end (it) != GNUNET_YES; 125 GNUNET_CONTAINER_slist_end (&it) != GNUNET_YES;
128 GNUNET_CONTAINER_slist_next (it), i++) 126 GNUNET_CONTAINER_slist_next (&it), i++)
129 { 127 {
130 p = GNUNET_CONTAINER_slist_get (it, &s); 128 p = GNUNET_CONTAINER_slist_get (&it, &s);
131 129
132 if ((p == NULL) || (i != *(int *) p) || (s != sizeof (i))) 130 if ((p == NULL) || (i != *(int *) p) || (s != sizeof (i)))
133 { 131 {
134 GNUNET_CONTAINER_slist_iter_destroy (it);
135 GNUNET_assert (0); 132 GNUNET_assert (0);
136 } 133 }
137 } 134 }
138 GNUNET_CONTAINER_slist_iter_destroy (it);
139 GNUNET_CONTAINER_slist_destroy (l); 135 GNUNET_CONTAINER_slist_destroy (l);
140 136
141 /*check if disp = GNUNET_CONTAINER_SLIST_DISPOSITION_DYNAMIC */ 137 /*check if disp = GNUNET_CONTAINER_SLIST_DISPOSITION_DYNAMIC */
@@ -151,12 +147,12 @@ main (int argc, char *argv[])
151 } 147 }
152 //creat_add 148 //creat_add
153 it = GNUNET_CONTAINER_slist_begin (l); 149 it = GNUNET_CONTAINER_slist_begin (l);
154 p = GNUNET_CONTAINER_slist_get (it, &s); 150 p = GNUNET_CONTAINER_slist_get (&it, &s);
155 GNUNET_assert (p != NULL); 151 GNUNET_assert (p != NULL);
156 //slist_erase 152 //slist_erase
157 GNUNET_assert (GNUNET_CONTAINER_slist_next (it) == GNUNET_YES); 153 GNUNET_assert (GNUNET_CONTAINER_slist_next (&it) == GNUNET_YES);
158 GNUNET_CONTAINER_slist_erase (it); 154 GNUNET_CONTAINER_slist_erase (&it);
159 GNUNET_CONTAINER_slist_iter_destroy (it); 155 GNUNET_CONTAINER_slist_iter_destroy (&it);
160 GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 99); 156 GNUNET_assert (GNUNET_CONTAINER_slist_count (l) == 99);
161 //slist_clear 157 //slist_clear
162 GNUNET_CONTAINER_slist_clear (l); 158 GNUNET_CONTAINER_slist_clear (l);