From ffd3944ab9d481906137bc7d20f5325a2bd68acc Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 1 Mar 2021 16:44:17 -0500 Subject: Improve reporting for syntax errors in multi-line JSON data. Point to the specific line where the error was detected; the previous code tended to include several preceding lines as well. Avoid re-scanning the entire input to recompute which line that was. Simplify the logic a bit. Add test cases. Simon Riggs and Hamid Akhtar, reviewed by Daniel Gustafsson and myself Discussion: https://postgr.es/m/CANbhV-EPBnXm3MF_TTWBwwqgn1a1Ghmep9VHfqmNBQ8BT0f+_g@mail.gmail.com --- src/common/jsonapi.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/common/jsonapi.c') diff --git a/src/common/jsonapi.c b/src/common/jsonapi.c index 831a44a2da6..1bf38d7b429 100644 --- a/src/common/jsonapi.c +++ b/src/common/jsonapi.c @@ -535,10 +535,12 @@ json_lex(JsonLexContext *lex) while (len < lex->input_length && (*s == ' ' || *s == '\t' || *s == '\n' || *s == '\r')) { - if (*s == '\n') + if (*s++ == '\n') + { ++lex->line_number; - ++s; - ++len; + lex->line_start = s; + } + len++; } lex->token_start = s; -- cgit v1.2.3