From b5f41768a7316efcb96568480cab28d641b9f55d Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Mon, 2 Jun 2025 12:47:34 -0400 Subject: [PATCH] Scan for non-decimal in n_digits2 --- src/parser3.h | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/parser3.h b/src/parser3.h index 570e530..c73b90d 100644 --- a/src/parser3.h +++ b/src/parser3.h @@ -8,7 +8,6 @@ #include #include #include -#include #ifdef __x86_64__ #include @@ -836,23 +835,17 @@ inline PRESERVE_NONE WeaselJsonStatus n_digits2(Parser3 *self) { self->pop(); MUSTTAIL return Parser3::keepGoing(self); } - switch (*self->buf) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': + + // Advance self->buf to the first non-decimal character + while (self->buf != self->bufEnd && '0' <= *self->buf && *self->buf <= '9') { ++self->buf; - MUSTTAIL return Parser3::keepGoing(self); - default: - self->pop(); - MUSTTAIL return Parser3::keepGoing(self); } + if (self->buf == self->bufEnd) { + self->flushNumber(false); + return WeaselJson_AGAIN; + } + self->pop(); + MUSTTAIL return Parser3::keepGoing(self); } inline PRESERVE_NONE WeaselJsonStatus n_fraction(Parser3 *self) {