@@ -641,26 +641,26 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
641641case xb:
642642if (literalbuf[strspn (literalbuf, " 01" )] != ' \0 ' )
643643mmerror (PARSE_ERROR, ET_ERROR, " invalid bit string literal" );
644- base_yylval.str = psprintf (" b'%s' " , literalbuf);
644+ base_yylval.str = make3_str (" b'" , literalbuf, " ' " );
645645return BCONST;
646646case xh:
647647if (literalbuf[strspn (literalbuf, " 0123456789abcdefABCDEF" )] != ' \0 ' )
648648mmerror (PARSE_ERROR, ET_ERROR, " invalid hexadecimal string literal" );
649- base_yylval.str = psprintf (" x'%s' " , literalbuf);
649+ base_yylval.str = make3_str (" x'" , literalbuf, " ' " );
650650return XCONST;
651651case xq:
652652/* fallthrough */
653653case xqc:
654- base_yylval.str = psprintf (" '%s' " , literalbuf);
654+ base_yylval.str = make3_str (" '" , literalbuf, " ' " );
655655return SCONST;
656656case xe:
657- base_yylval.str = psprintf (" E'%s' " , literalbuf);
657+ base_yylval.str = make3_str (" E'" , literalbuf, " ' " );
658658return SCONST;
659659case xn:
660- base_yylval.str = psprintf (" N'%s' " , literalbuf);
660+ base_yylval.str = make3_str (" N'" , literalbuf, " ' " );
661661return SCONST;
662662case xus:
663- base_yylval.str = psprintf (" U&'%s' " , literalbuf);
663+ base_yylval.str = make3_str (" U&'" , literalbuf, " ' " );
664664return USCONST;
665665default :
666666mmfatal (PARSE_ERROR, " unhandled previous state in xqs\n " );
@@ -724,7 +724,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
724724free (dolqstart);
725725dolqstart = NULL ;
726726BEGIN (SQL);
727- base_yylval.str = mm_strdup (literalbuf);
727+ base_yylval.str = loc_strdup (literalbuf);
728728return SCONST;
729729}
730730else
@@ -778,12 +778,12 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
778778 * PREPARE and EXECUTE IMMEDIATE, which can certainly be
779779 * longer than NAMEDATALEN.
780780 */
781- base_yylval.str = mm_strdup (literalbuf);
781+ base_yylval.str = loc_strdup (literalbuf);
782782return CSTRING;
783783}
784784<xdc >{xdstop } {
785785BEGIN (state_before_str_start);
786- base_yylval.str = mm_strdup (literalbuf);
786+ base_yylval.str = loc_strdup (literalbuf);
787787return CSTRING;
788788}
789789<xui >{dquote } {
@@ -795,7 +795,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
795795 * The backend will truncate the identifier here. We do
796796 * not as it does not change the result.
797797 */
798- base_yylval.str = psprintf (" U&\" %s \" " , literalbuf);
798+ base_yylval.str = make3_str (" U&\" " , literalbuf, " \" " );
799799return UIDENT;
800800}
801801<xd ,xui >{xddouble } {
@@ -971,7 +971,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
971971}
972972}
973973
974- base_yylval.str = mm_strdup (yytext);
974+ base_yylval.str = loc_strdup (yytext);
975975return Op;
976976}
977977
@@ -990,7 +990,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
990990}
991991
992992{ip } {
993- base_yylval.str = mm_strdup (yytext);
993+ base_yylval.str = loc_strdup (yytext);
994994return IP;
995995}
996996} /* <SQL> */
@@ -1003,7 +1003,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
10031003return process_integer_literal (yytext, &base_yylval, 16 );
10041004}
10051005{numeric } {
1006- base_yylval.str = mm_strdup (yytext);
1006+ base_yylval.str = loc_strdup (yytext);
10071007return FCONST;
10081008}
10091009{numericfail } {
@@ -1012,7 +1012,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
10121012return process_integer_literal (yytext, &base_yylval, 10 );
10131013}
10141014{real } {
1015- base_yylval.str = mm_strdup (yytext);
1015+ base_yylval.str = loc_strdup (yytext);
10161016return FCONST;
10171017}
10181018{realfail } {
@@ -1048,7 +1048,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
10481048}
10491049
10501050:{identifier }(((" ->" | \. ){identifier })| (\[ {array }\] ))* {
1051- base_yylval.str = mm_strdup (yytext + 1 );
1051+ base_yylval.str = loc_strdup (yytext + 1 );
10521052return CVARIABLE;
10531053}
10541054
@@ -1085,7 +1085,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
10851085 * to do so; that's just another way that ecpg could
10861086 * get out of step with the backend.
10871087 */
1088- base_yylval.str = mm_strdup (yytext);
1088+ base_yylval.str = loc_strdup (yytext);
10891089return IDENT;
10901090}
10911091}
@@ -1124,7 +1124,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
11241124}
11251125else
11261126{
1127- base_yylval.str = mm_strdup (yytext);
1127+ base_yylval.str = loc_strdup (yytext);
11281128return CPP_LINE;
11291129}
11301130}
@@ -1136,12 +1136,12 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
11361136}
11371137else
11381138{
1139- base_yylval.str = mm_strdup (yytext);
1139+ base_yylval.str = loc_strdup (yytext);
11401140return CPP_LINE;
11411141}
11421142}
11431143<C ,SQL >{cppline } {
1144- base_yylval.str = mm_strdup (yytext);
1144+ base_yylval.str = loc_strdup (yytext);
11451145return CPP_LINE;
11461146}
11471147<C >{identifier } {
@@ -1167,7 +1167,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
11671167return kwvalue;
11681168else
11691169{
1170- base_yylval.str = mm_strdup (yytext);
1170+ base_yylval.str = loc_strdup (yytext);
11711171return IDENT;
11721172}
11731173}
@@ -1685,7 +1685,7 @@ process_integer_literal(const char *token, YYSTYPE *lval, int base)
16851685if (*endptr != ' \0 ' || errno == ERANGE)
16861686{
16871687/* integer too large (or contains decimal pt), treat it as a float */
1688- lval->str = mm_strdup (token);
1688+ lval->str = loc_strdup (token);
16891689return FCONST;
16901690}
16911691lval->ival = val;
0 commit comments