Eliminate token length assumption in scanstr().
This commit is contained in:
parent
a7fd74edb3
commit
b65ab31910
|
@ -8,7 +8,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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);
|
return(ID);
|
||||||
}
|
}
|
||||||
{id} {
|
{id} {
|
||||||
yylval.ival = EnterString(scanstr((char*)yytext));
|
char *newid = scanstr((char*)yytext);
|
||||||
|
yylval.ival = EnterString(newid);
|
||||||
|
pfree(newid);
|
||||||
return(ID);
|
return(ID);
|
||||||
}
|
}
|
||||||
{sid} {
|
{sid} {
|
||||||
|
char *newid;
|
||||||
yytext[strlen(yytext)-1] = '\0'; /* strip off quotes */
|
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 */
|
yytext[strlen(yytext)] = '"'; /* restore quotes */
|
||||||
return(ID);
|
return(ID);
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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} {
|
<xq>{xqstop} {
|
||||||
BEGIN(INITIAL);
|
BEGIN(INITIAL);
|
||||||
yylval.str = pstrdup(scanstr(literal));
|
yylval.str = scanstr(literal);
|
||||||
return SCONST;
|
return SCONST;
|
||||||
}
|
}
|
||||||
<xq>{xqdouble} |
|
<xq>{xqdouble} |
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* if the string passed in has escaped codes, map the escape codes to actual
|
||||||
* chars
|
* chars
|
||||||
*
|
*
|
||||||
* the string returned is a pointer to static storage and should NOT
|
* the string returned is palloc'd and should eventually be pfree'd by the
|
||||||
* be freed by the caller.
|
* caller!
|
||||||
* ----------------
|
* ----------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *
|
char *
|
||||||
scanstr(char *s)
|
scanstr(char *s)
|
||||||
{
|
{
|
||||||
static char newStr[MAX_PARSE_BUFFER];
|
char *newStr;
|
||||||
int len,
|
int len,
|
||||||
i,
|
i,
|
||||||
j;
|
j;
|
||||||
|
|
||||||
if (s == NULL || s[0] == '\0')
|
if (s == NULL || s[0] == '\0')
|
||||||
return s;
|
return pstrdup("");
|
||||||
|
|
||||||
len = strlen(s);
|
len = strlen(s);
|
||||||
|
|
||||||
|
newStr = palloc(len+1); /* string cannot get longer */
|
||||||
|
|
||||||
for (i = 0, j = 0; i < len; i++)
|
for (i = 0, j = 0; i < len; i++)
|
||||||
{
|
{
|
||||||
if (s[i] == '\'')
|
if (s[i] == '\'')
|
||||||
|
|
|
@ -239,7 +239,7 @@ cppline {space}*#.*(\\{space}*\n)*\n*
|
||||||
}
|
}
|
||||||
<xq>{xqstop} {
|
<xq>{xqstop} {
|
||||||
BEGIN(SQL);
|
BEGIN(SQL);
|
||||||
/* yylval.str = mm_strdup(scanstr(literal));*/
|
/* yylval.str = scanstr(literal); */
|
||||||
yylval.str = mm_strdup(literal);
|
yylval.str = mm_strdup(literal);
|
||||||
return SCONST;
|
return SCONST;
|
||||||
}
|
}
|
||||||
|
@ -601,7 +601,7 @@ cppline {space}*#.*(\\{space}*\n)*\n*
|
||||||
if (strcmp(old, ptr->old) == 0)
|
if (strcmp(old, ptr->old) == 0)
|
||||||
{
|
{
|
||||||
free(ptr->new);
|
free(ptr->new);
|
||||||
/* ptr->new = mm_strdup(scanstr(literal));*/
|
/* ptr->new = scanstr(literal); */
|
||||||
ptr->new = mm_strdup(literal);
|
ptr->new = mm_strdup(literal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -611,7 +611,7 @@ cppline {space}*#.*(\\{space}*\n)*\n*
|
||||||
|
|
||||||
/* initial definition */
|
/* initial definition */
|
||||||
this->old = old;
|
this->old = old;
|
||||||
/* this->new = mm_strdup(scanstr(literal));*/
|
/* this->new = scanstr(literal); */
|
||||||
this->new = mm_strdup(literal);
|
this->new = mm_strdup(literal);
|
||||||
this->next = defines;
|
this->next = defines;
|
||||||
defines = this;
|
defines = this;
|
||||||
|
|
Loading…
Reference in New Issue