From b290660013101d3817245176d2a34726498d08fc Mon Sep 17 00:00:00 2001 From: pommicket Date: Thu, 11 Sep 2025 21:58:55 -0400 Subject: Simplify parser_error --- pom.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pom.c b/pom.c index 9a4028e..2179df3 100644 --- a/pom.c +++ b/pom.c @@ -250,15 +250,17 @@ parser_error(struct parser *parser, const char *fmt, ...) { if (error_len > 1000) error_len = 1000; // truncate very long errors char *message = parser_append(parser, error_messages, error_len + 1); + if (!message) { + if (!bad_fmt) va_end(args_copy); + return; + } uint32_t message_idx = message - parser->error_messages.array; if (bad_fmt) { // use fmt as error message - if (message) strcpy(message, fmt); + strcpy(message, fmt); } else { - // (does nothing if message is NULL, but ends args_copy) - vsnprintf(message, message ? error_len + 1 : 0, fmt, args_copy); + vsnprintf(message, error_len + 1, fmt, args_copy); } - if (!message) return; struct parser_error *error = parser_append_one(parser, errors); if (!error) return; error->line = parser->line_number; -- cgit v1.2.3