Skip to content
Snippets Groups Projects
Commit b65ab319 authored by Tom Lane's avatar Tom Lane
Browse files

Eliminate token length assumption in scanstr().

parent a7fd74ed
No related branches found
No related tags found
No related merge requests found
......@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootscanner.l,v 1.14 1999/07/17 20:16:47 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootscanner.l,v 1.15 1999/09/11 22:26:41 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -98,12 +98,17 @@ insert { return(INSERT_TUPLE); }
return(ID);
}
{id} {
yylval.ival = EnterString(scanstr((char*)yytext));
char *newid = scanstr((char*)yytext);
yylval.ival = EnterString(newid);
pfree(newid);
return(ID);
}
{sid} {
char *newid;
yytext[strlen(yytext)-1] = '\0'; /* strip off quotes */
yylval.ival = EnterString(scanstr((char*)yytext+1));
newid = scanstr((char*)yytext+1);
yylval.ival = EnterString(newid);
pfree(newid);
yytext[strlen(yytext)] = '"'; /* restore quotes */
return(ID);
}
......
......@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.53 1999/09/07 00:13:27 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.54 1999/09/11 22:26:35 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -246,7 +246,7 @@ other .
}
<xq>{xqstop} {
BEGIN(INITIAL);
yylval.str = pstrdup(scanstr(literal));
yylval.str = scanstr(literal);
return SCONST;
}
<xq>{xqdouble} |
......
......@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/scansup.c,v 1.16 1999/07/17 20:17:27 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/scansup.c,v 1.17 1999/09/11 22:26:35 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -25,24 +25,26 @@
* if the string passed in has escaped codes, map the escape codes to actual
* chars
*
* the string returned is a pointer to static storage and should NOT
* be freed by the caller.
* the string returned is palloc'd and should eventually be pfree'd by the
* caller!
* ----------------
*/
char *
scanstr(char *s)
{
static char newStr[MAX_PARSE_BUFFER];
char *newStr;
int len,
i,
j;
if (s == NULL || s[0] == '\0')
return s;
return pstrdup("");
len = strlen(s);
newStr = palloc(len+1); /* string cannot get longer */
for (i = 0, j = 0; i < len; i++)
{
if (s[i] == '\'')
......
......@@ -239,7 +239,7 @@ cppline {space}*#.*(\\{space}*\n)*\n*
}
<xq>{xqstop} {
BEGIN(SQL);
/* yylval.str = mm_strdup(scanstr(literal));*/
/* yylval.str = scanstr(literal); */
yylval.str = mm_strdup(literal);
return SCONST;
}
......@@ -601,7 +601,7 @@ cppline {space}*#.*(\\{space}*\n)*\n*
if (strcmp(old, ptr->old) == 0)
{
free(ptr->new);
/* ptr->new = mm_strdup(scanstr(literal));*/
/* ptr->new = scanstr(literal); */
ptr->new = mm_strdup(literal);
}
}
......@@ -611,7 +611,7 @@ cppline {space}*#.*(\\{space}*\n)*\n*
/* initial definition */
this->old = old;
/* this->new = mm_strdup(scanstr(literal));*/
/* this->new = scanstr(literal); */
this->new = mm_strdup(literal);
this->next = defines;
defines = this;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment