From 2efb8e80703532744a7caf35244dfe7ad8a85cff Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 18 Aug 2002 03:35:08 +0000 Subject: [PATCH] Code review for 'at character n' patch --- point at proper end of a token scanned by multiple lex rules. --- src/backend/parser/scan.l | 15 ++++++++------- src/test/regress/expected/strings.out | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l index 51e1aa4be8..5092f82e5e 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.99 2002/08/17 13:06:50 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.100 2002/08/18 03:35:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -582,12 +582,13 @@ other . void yyerror(const char *message) { - if(yyleng == 1 && *yytext == YY_END_OF_BUFFER_CHAR) - elog(ERROR, "parser: %s at end of input",message); - else - elog(ERROR, "parser: %s at or near \"%s\" at character %i", - message,token_start ? token_start : yytext, - (unsigned int)(yytext - scanbuf + 1)); + const char *loc = token_start ? token_start : yytext; + + if (*loc == YY_END_OF_BUFFER_CHAR) + elog(ERROR, "parser: %s at end of input", message); + else + elog(ERROR, "parser: %s at or near \"%s\" at character %d", + message, loc, (loc - scanbuf + 1)); } diff --git a/src/test/regress/expected/strings.out b/src/test/regress/expected/strings.out index b275df2ff8..67dbd1a2d9 100644 --- a/src/test/regress/expected/strings.out +++ b/src/test/regress/expected/strings.out @@ -18,7 +18,7 @@ SELECT 'first line' ' - next line' /* this comment is not allowed here */ ' - third line' AS "Illegal comment within continuation"; -ERROR: parser: parse error at or near "' - third line'" at character 89 +ERROR: parser: parse error at or near "' - third line'" at character 75 -- -- test conversions between various string types -- E021-10 implicit casting among the character data types -- 2.40.0