@@ -641,26 +641,26 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
641641 case xb:
642642 if (literalbuf[strspn (literalbuf, " 01" )] != ' \0 ' )
643643 mmerror (PARSE_ERROR, ET_ERROR, " invalid bit string literal" );
644- base_yylval.str = psprintf (" b'%s' " , literalbuf);
644+ base_yylval.str = make3_str (" b'" , literalbuf, " ' " );
645645 return BCONST;
646646 case xh:
647647 if (literalbuf[strspn (literalbuf, " 0123456789abcdefABCDEF" )] != ' \0 ' )
648648 mmerror (PARSE_ERROR, ET_ERROR, " invalid hexadecimal string literal" );
649- base_yylval.str = psprintf (" x'%s' " , literalbuf);
649+ base_yylval.str = make3_str (" x'" , literalbuf, " ' " );
650650 return XCONST;
651651 case xq:
652652 /* fallthrough */
653653 case xqc:
654- base_yylval.str = psprintf (" '%s' " , literalbuf);
654+ base_yylval.str = make3_str (" '" , literalbuf, " ' " );
655655 return SCONST;
656656 case xe:
657- base_yylval.str = psprintf (" E'%s' " , literalbuf);
657+ base_yylval.str = make3_str (" E'" , literalbuf, " ' " );
658658 return SCONST;
659659 case xn:
660- base_yylval.str = psprintf (" N'%s' " , literalbuf);
660+ base_yylval.str = make3_str (" N'" , literalbuf, " ' " );
661661 return SCONST;
662662 case xus:
663- base_yylval.str = psprintf (" U&'%s' " , literalbuf);
663+ base_yylval.str = make3_str (" U&'" , literalbuf, " ' " );
664664 return USCONST;
665665 default :
666666 mmfatal (PARSE_ERROR, " unhandled previous state in xqs\n " );
@@ -724,7 +724,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
724724 free (dolqstart);
725725 dolqstart = NULL ;
726726 BEGIN (SQL);
727- base_yylval.str = mm_strdup (literalbuf);
727+ base_yylval.str = loc_strdup (literalbuf);
728728 return SCONST;
729729 }
730730 else
@@ -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);
782782 return CSTRING;
783783 }
784784<xdc >{xdstop } {
785785 BEGIN (state_before_str_start);
786- base_yylval.str = mm_strdup (literalbuf);
786+ base_yylval.str = loc_strdup (literalbuf);
787787 return 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, " \" " );
799799 return 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);
975975 return 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);
994994 return IP;
995995 }
996996} /* <SQL> */
@@ -1003,7 +1003,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
10031003 return process_integer_literal (yytext, &base_yylval, 16 );
10041004 }
10051005{numeric } {
1006- base_yylval.str = mm_strdup (yytext);
1006+ base_yylval.str = loc_strdup (yytext);
10071007 return FCONST;
10081008 }
10091009{numericfail } {
@@ -1012,7 +1012,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
10121012 return process_integer_literal (yytext, &base_yylval, 10 );
10131013 }
10141014{real } {
1015- base_yylval.str = mm_strdup (yytext);
1015+ base_yylval.str = loc_strdup (yytext);
10161016 return 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 );
10521052 return 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);
10891089 return IDENT;
10901090 }
10911091 }
@@ -1124,7 +1124,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
11241124 }
11251125 else
11261126 {
1127- base_yylval.str = mm_strdup (yytext);
1127+ base_yylval.str = loc_strdup (yytext);
11281128 return CPP_LINE;
11291129 }
11301130 }
@@ -1136,12 +1136,12 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
11361136 }
11371137 else
11381138 {
1139- base_yylval.str = mm_strdup (yytext);
1139+ base_yylval.str = loc_strdup (yytext);
11401140 return CPP_LINE;
11411141 }
11421142 }
11431143<C ,SQL >{cppline } {
1144- base_yylval.str = mm_strdup (yytext);
1144+ base_yylval.str = loc_strdup (yytext);
11451145 return CPP_LINE;
11461146 }
11471147<C >{identifier } {
@@ -1167,7 +1167,7 @@ cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
11671167 return kwvalue;
11681168 else
11691169 {
1170- base_yylval.str = mm_strdup (yytext);
1170+ base_yylval.str = loc_strdup (yytext);
11711171 return IDENT;
11721172 }
11731173 }
@@ -1685,7 +1685,7 @@ process_integer_literal(const char *token, YYSTYPE *lval, int base)
16851685 if (*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);
16891689 return FCONST;
16901690 }
16911691 lval->ival = val;
0 commit comments