#define STRTOUMAX strtoul
#endif
-#define dup_token() do { \
- yylval->strval = malloc(yyleng+1); \
- if (!yylval->strval) { \
- cdecl__errmsg(CDECL__ENOMEM); \
- return T_LEX_ERROR; \
- } \
- memcpy(yylval->strval, yytext, yyleng); \
- yylval->strval[yyleng] = 0; \
-} while(0)
-
static char *to_octal(char *dst, unsigned val)
{
unsigned i;
#else
yyless(strcspn(yytext, "-"));
#endif
- dup_token();
+ if (!(yylval->item = cdecl__alloc_item(yyleng+1)))
+ return T_LEX_ERROR; \
+ memcpy(yylval->item->s, yytext, yyleng+1);
}
return UNPACK_TOKEN(tok);
}