aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/parser/scan.l16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l
index 6e18a41db1e..f8c18689f84 100644
--- a/src/backend/parser/scan.l
+++ b/src/backend/parser/scan.l
@@ -620,28 +620,32 @@ other .
return IDENT;
}
<xui>{xuistop1} {
- char *ident;
+ char *ident;
+ int identlen;
BEGIN(INITIAL);
if (literallen == 0)
yyerror("zero-length delimited identifier");
ident = litbuf_udeescape('\\');
- if (literallen >= NAMEDATALEN)
- truncate_identifier(ident, literallen, true);
+ identlen = strlen(ident);
+ if (identlen >= NAMEDATALEN)
+ truncate_identifier(ident, identlen, true);
yylval.str = ident;
/* throw back all but the quote */
yyless(1);
return IDENT;
}
<xui>{xuistop2} {
- char *ident;
+ char *ident;
+ int identlen;
BEGIN(INITIAL);
if (literallen == 0)
yyerror("zero-length delimited identifier");
ident = litbuf_udeescape(yytext[yyleng - 2]);
- if (literallen >= NAMEDATALEN)
- truncate_identifier(ident, literallen, true);
+ identlen = strlen(ident);
+ if (identlen >= NAMEDATALEN)
+ truncate_identifier(ident, identlen, true);
yylval.str = ident;
return IDENT;
}