A finalize may have side-effects that trigger port removal, thus calling
finalize again. Ensure it is not called more than once.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
break;
}
+ if (iterator->state == BT_NOTIFICATION_ITERATOR_STATE_ENDED) {
+ iterator->state = BT_NOTIFICATION_ITERATOR_STATE_FINALIZED_AND_ENDED;
+ } else {
+ iterator->state = BT_NOTIFICATION_ITERATOR_STATE_FINALIZED;
+ }
+
assert(iterator->upstream_component);
comp_class = iterator->upstream_component->class;
bt_private_notification_iterator_from_notification_iterator(iterator));
}
- if (iterator->state == BT_NOTIFICATION_ITERATOR_STATE_ENDED) {
- iterator->state = BT_NOTIFICATION_ITERATOR_STATE_FINALIZED_AND_ENDED;
- } else {
- iterator->state = BT_NOTIFICATION_ITERATOR_STATE_FINALIZED;
- }
-
iterator->upstream_component = NULL;
iterator->upstream_port = NULL;
}