From fa9572d33af15863e2316f8b182bdc52efd6af54 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sat, 30 May 2026 20:19:47 +0100 Subject: [PATCH] fx: iterator: return NULL value if iterator status is not SUCCESS --- fx/iterator.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/fx/iterator.c b/fx/iterator.c index 149e772..6bf8ebe 100644 --- a/fx/iterator.c +++ b/fx/iterator.c @@ -51,9 +51,8 @@ enum fx_status fx_iterator_move_next(const fx_iterator *it) { enum fx_status status = FX_ERR_NOT_SUPPORTED; - fx_iterator_class *iface = fx_object_get_interface( - it, - FX_TYPE_ITERATOR); + fx_iterator_class *iface + = fx_object_get_interface(it, FX_TYPE_ITERATOR); if (iface && iface->it_move_next) { status = iface->it_move_next(it); } @@ -66,6 +65,10 @@ enum fx_status fx_iterator_move_next(const fx_iterator *it) const fx_value *fx_iterator_get_value(const fx_iterator *it) { + if (fx_iterator_get_status(it) != FX_SUCCESS) { + return NULL; + } + FX_CLASS_DISPATCH_VIRTUAL_0( fx_iterator, FX_TYPE_ITERATOR, @@ -78,9 +81,8 @@ fx_status fx_iterator_erase(fx_iterator *it) { enum fx_status status = FX_ERR_NOT_SUPPORTED; - fx_iterator_class *iface = fx_object_get_interface( - it, - FX_TYPE_ITERATOR); + fx_iterator_class *iface + = fx_object_get_interface(it, FX_TYPE_ITERATOR); if (iface && iface->it_erase) { status = iface->it_erase(it); }