From e0c3ff08acbc25040e73838770435e1d2a89265e Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 25 Feb 2025 09:56:01 -0500 Subject: Fix reading numbers with no space before the final dot --- src/n3.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/n3.c b/src/n3.c index 9750532b..cd77eb3b 100644 --- a/src/n3.c +++ b/src/n3.c @@ -814,18 +814,16 @@ read_number(SerdReader* const reader, // all other cases ::= ( '-' | '+' ) [0-9]+ ( . )? ( [0-9]+ )? ... TRY(st, read_0_9(reader, *dest, true)); if ((c = peek_byte(reader)) == '.') { - has_decimal = true; - // Annoyingly, dot can be end of statement, so tentatively eat skip_byte(reader, c); c = peek_byte(reader); if (!is_digit(c) && c != 'e' && c != 'E') { - *ate_dot = true; // Force caller to deal with stupid grammar - return SERD_SUCCESS; // Next byte is not a number character + *ate_dot = true; // Force caller to deal with silly grammar + } else { + has_decimal = true; + push_byte(reader, *dest, '.'); + read_0_9(reader, *dest, false); } - - push_byte(reader, *dest, '.'); - read_0_9(reader, *dest, false); } } c = peek_byte(reader); -- cgit v1.2.1