@@ -150,15 +150,19 @@ void **__add_ptr_list(struct ptr_list **listp, void *ptr, unsigned long tag)
int delete_ptr_list_entry(struct ptr_list **list, void *entry, int count)
{
- void *ptr;
+ struct ptr_cur cur;
- FOR_EACH_PTR(*list, ptr) {
+ if (!ptr_cur_beg(&cur, *list))
+ goto out;
+
+ while (ptr_cur_next(&cur)) {
+ void *ptr = cur.l->list[cur.n];
if (ptr == entry) {
- DELETE_CURRENT_PTR(ptr);
+ ptr_cur_delete(&cur, ptr);
if (!--count)
goto out;
}
- } END_FOR_EACH_PTR(ptr);
+ }
assert(count <= 0);
out:
pack_ptr_list(list);