From fbb12ebbf523b4599a997f1cef359e2a069d9e13 Mon Sep 17 00:00:00 2001 From: David Crocker Date: Fri, 25 Feb 2022 18:25:07 +0000 Subject: Bug fix for OM query of tools[N].fans[M] --- src/ObjectModel/ObjectModel.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/ObjectModel/ObjectModel.cpp b/src/ObjectModel/ObjectModel.cpp index 6376f1e3..bef41e8f 100644 --- a/src/ObjectModel/ObjectModel.cpp +++ b/src/ObjectModel/ObjectModel.cpp @@ -656,13 +656,14 @@ void ObjectModel::ReportItemAsJsonFull(OutputBuffer *buf, ObjectExplorationConte { const char *endptr; const int32_t index = StrToI32(filter, &endptr); - if (endptr == filter || *endptr != ']' || index < 0 || (size_t)index >= val.omadVal->GetNumElements(this, context)) + const auto bm = Bitmap::MakeFromRaw(val.uVal); + int bitNumber; + if (endptr == filter || *endptr != ']' || index < 0 || (bitNumber = bm.GetSetBitNumber(index)) < 0) { buf->cat("null"); // avoid returning badly-formed JSON break; // invalid syntax, or index out of range } - const auto bm = Bitmap::MakeFromRaw(val.uVal); - buf->catf("%u", bm.GetSetBitNumber(index)); + buf->catf("%d", bitNumber); break; } } @@ -688,13 +689,14 @@ void ObjectModel::ReportItemAsJsonFull(OutputBuffer *buf, ObjectExplorationConte { const char *endptr; const int32_t index = StrToI32(filter, &endptr); - if (endptr == filter || *endptr != ']' || index < 0 || (size_t)index >= val.omadVal->GetNumElements(this, context)) + const auto bm = Bitmap::MakeFromRaw(val.uVal); + int bitNumber; + if (endptr == filter || *endptr != ']' || index < 0 || (bitNumber = bm.GetSetBitNumber(index)) < 0) { buf->cat("null"); // avoid returning badly-formed JSON break; // invalid syntax, or index out of range } - const auto bm = Bitmap::MakeFromRaw(val.uVal); - buf->catf("%u", bm.GetSetBitNumber(index)); + buf->catf("%d", bitNumber); break; } } -- cgit v1.2.3