diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-10-14 07:22:42 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-10-14 07:22:42 +0000 |
commit | 662b5736c37e8cf2b3e6aa5af53cef0d03b743ab (patch) | |
tree | c4299637a2db19a3e87957645d5aa58e196da43f | |
parent | 94aa63cb17777332095a1de0a70382a49e10fecb (diff) | |
download | gnunet-662b5736c37e8cf2b3e6aa5af53cef0d03b743ab.tar.gz gnunet-662b5736c37e8cf2b3e6aa5af53cef0d03b743ab.zip |
LRN loves slist: Use stack allocation for slist iterator
-rw-r--r-- | src/include/gnunet_container_lib.h | 25 | ||||
-rw-r--r-- | src/util/container_slist.c | 44 | ||||
-rw-r--r-- | src/util/network.c | 63 | ||||
-rw-r--r-- | src/util/test_container_slist.c | 42 |
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 | */ |
1057 | struct GNUNET_CONTAINER_SList_Iterator; | 1057 | struct 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 | */ |
1118 | struct GNUNET_CONTAINER_SList_Iterator * | 1137 | struct GNUNET_CONTAINER_SList_Iterator |
1119 | GNUNET_CONTAINER_slist_begin (struct GNUNET_CONTAINER_SList *l); | 1138 | GNUNET_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 | */ | ||
84 | struct 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 | |||
186 | GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst, | 165 | GNUNET_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 | */ |
236 | struct GNUNET_CONTAINER_SList_Iterator * | 215 | struct GNUNET_CONTAINER_SList_Iterator |
237 | GNUNET_CONTAINER_slist_begin (struct GNUNET_CONTAINER_SList *l) | 216 | GNUNET_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 | |||
405 | GNUNET_CONTAINER_slist_iter_destroy (struct GNUNET_CONTAINER_SList_Iterator | 384 | GNUNET_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 | |||
32 | main (int argc, char *argv[]) | 32 | main (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); |