diff options
Diffstat (limited to 'src/backend/parser')
-rw-r--r-- | src/backend/parser/scan.l | 4 | ||||
-rw-r--r-- | src/backend/parser/scansup.c | 12 |
2 files changed, 9 insertions, 7 deletions
diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l index ece71b489fd..011676de1d7 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -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} | diff --git a/src/backend/parser/scansup.c b/src/backend/parser/scansup.c index df3ea1d931a..4e15bd24095 100644 --- a/src/backend/parser/scansup.c +++ b/src/backend/parser/scansup.c @@ -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] == '\'') |