summaryrefslogtreecommitdiff
path: root/pom.c
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2025-09-11 21:58:55 -0400
committerpommicket <pommicket@gmail.com>2025-09-11 21:58:55 -0400
commitb290660013101d3817245176d2a34726498d08fc (patch)
treef54fb577ee2d983c8aa1e09e80a961fd90f13d23 /pom.c
parent30359dae2f70c92ae661581a0d1fccdf4c078c79 (diff)
Simplify parser_error
Diffstat (limited to 'pom.c')
-rw-r--r--pom.c10
1 files 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;