Skip to content

Commit 7afad46

Browse files
committed
Fix iteration
1 parent b84e49c commit 7afad46

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/net/matching.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,16 @@ _z_matching_listener_t _z_matching_listener_declare(_z_session_rc_t *zn, const _
8080

8181
z_result_t _z_matching_listener_entity_undeclare(_z_session_t *zn, _z_zint_t entity_id) {
8282
_z_matching_listener_intmap_iterator_t iter = _z_matching_listener_intmap_iterator_make(&zn->_matching_listeners);
83-
while (_z_matching_listener_intmap_iterator_next(&iter)) {
83+
bool has_next = _z_matching_listener_intmap_iterator_next(&iter);
84+
while (has_next) {
8485
size_t key = _z_matching_listener_intmap_iterator_key(&iter);
8586
_z_matching_listener_state_t *listener = _z_matching_listener_intmap_iterator_value(&iter);
87+
has_next = _z_matching_listener_intmap_iterator_next(&iter);
8688
if (listener->entity_id == entity_id) {
8789
_Z_DEBUG("_z_matching_listener_entity_undeclare: entity=%i, listener=%i", (int)entity_id, (int)key);
88-
_z_matching_listener_intmap_remove(&zn->_matching_listeners, key);
8990
_z_remove_interest(zn, listener->interest_id);
91+
_z_matching_listener_intmap_remove(&zn->_matching_listeners, key);
9092
}
91-
_z_str_intmap_iterator_next(&iter);
9293
}
9394
return _Z_RES_OK;
9495
}

tests/z_collections_test.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,12 +361,13 @@ void int_map_iterator_deletion_test(void) {
361361
_z_str_intmap_insert(&map, 40, _z_str_clone("D"));
362362

363363
_z_str_intmap_iterator_t iter = _z_str_intmap_iterator_make(&map);
364+
_z_str_intmap_iterator_next(&iter);
364365
for (size_t s = 4; s != 0; s--) {
365366
assert(s == _z_str_intmap_len(&map));
366-
_z_str_intmap_iterator_next(&iter);
367367
size_t key = _z_str_intmap_iterator_key(&iter);
368368
assert(strlen(_z_str_intmap_iterator_value(&iter)) == 1);
369369
_z_str_intmap_remove(&map, key);
370+
_z_str_intmap_iterator_next(&iter);
370371
}
371372
_z_str_intmap_clear(&map);
372373
}

0 commit comments

Comments
 (0)