errno = 0;
unsigned long long num = strtoull(token->val.str, NULL, 10);
rc = errno;
+ if (rc)
+ return rc;
+
free(token->val.str);
token->val.num = num;
return rc;
} else if (isdigit((unsigned char)c)) {
t->type = TOKEN_DEC;
xstrputc(&t->val.str, c);
- if (parser_read_dec(parser, t) != 0)
+ if (parser_read_dec(parser, t) != 0) {
snprintf(parser->errmsg, sizeof(parser->errmsg),
- _("error: failed to convert input to number"));
+ _("error: failed to convert input to number: %s"),
+ t->val.str);
+ free(t->val.str);
+ }
break;
}
snprintf(parser->errmsg, sizeof(parser->errmsg),