From 49b652024ed10d4d16c9222b334784de3c858bc3 Mon Sep 17 00:00:00 2001 From: Ilnur Khuziev Date: Fri, 5 Sep 2025 12:21:36 +0300 Subject: [PATCH] fix interpreting optional with 0 value as true in checks --- src/filters.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/filters.cpp b/src/filters.cpp index 3ab9f338..203b23a4 100644 --- a/src/filters.cpp +++ b/src/filters.cpp @@ -487,7 +487,7 @@ InternalValue SequenceAccessor::Filter(const InternalValue& baseVal, RenderConte switch (m_mode) { case FirstItemMode: - if (listSize) + if (listSize && *listSize > 0) result = ProtectedValue( list.GetValueByIndex(0) ); else { @@ -497,7 +497,7 @@ InternalValue SequenceAccessor::Filter(const InternalValue& baseVal, RenderConte } break; case LastItemMode: - if (listSize) + if (listSize && *listSize > 0) result = ProtectedValue(list.GetValueByIndex(listSize.value() - 1)); else { @@ -508,7 +508,7 @@ InternalValue SequenceAccessor::Filter(const InternalValue& baseVal, RenderConte } break; case LengthMode: - if (listSize) + if (listSize && *listSize > 0) result = static_cast(listSize.value()); else result = static_cast(std::distance(list.begin(), list.end())); @@ -517,7 +517,7 @@ InternalValue SequenceAccessor::Filter(const InternalValue& baseVal, RenderConte { std::random_device rd; std::mt19937 gen(rd()); - if (listSize) + if (listSize && *listSize > 0) { std::uniform_int_distribution<> dis(0, static_cast(listSize.value()) - 1); result = ProtectedValue(list.GetValueByIndex(dis(gen)));