288 |
status = iterator_create(&itr, list); |
status = iterator_create(&itr, list); |
289 |
if (status) |
if (status) |
290 |
return status; |
return status; |
|
monitor_rdlock (list->monitor); |
|
291 |
for (iterator_first (itr); !iterator_is_done (itr); iterator_next (itr)) |
for (iterator_first (itr); !iterator_is_done (itr); iterator_next (itr)) |
292 |
{ |
{ |
293 |
void *item; |
void *item; |
294 |
iterator_current (itr, &item); |
iterator_current (itr, &item); |
295 |
if ((status = action (current->item, cbdata))) |
if ((status = action (item, cbdata))) |
296 |
break; |
break; |
297 |
} |
} |
|
monitor_unlock (list->monitor); |
|
298 |
iterator_destroy (&itr); |
iterator_destroy (&itr); |
299 |
return status; |
return status; |
300 |
} |
} |