diff options
author | pommicket <pommicket@gmail.com> | 2025-09-11 21:58:55 -0400 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2025-09-11 21:58:55 -0400 |
commit | b290660013101d3817245176d2a34726498d08fc (patch) | |
tree | f54fb577ee2d983c8aa1e09e80a961fd90f13d23 | |
parent | 30359dae2f70c92ae661581a0d1fccdf4c078c79 (diff) |
Simplify parser_error
-rw-r--r-- | pom.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -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; |