diff options
-rw-r--r-- | sway/commands.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/sway/commands.c b/sway/commands.c index 0ced71ec..2160a970 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -485,13 +485,19 @@ struct cmd_results *cmd_results_new(enum cmd_status status, | |||
485 | } | 485 | } |
486 | results->status = status; | 486 | results->status = status; |
487 | if (format) { | 487 | if (format) { |
488 | char *error = malloc(256); | 488 | char *error = NULL; |
489 | va_list args; | 489 | va_list args; |
490 | va_start(args, format); | 490 | va_start(args, format); |
491 | if (error) { | 491 | int slen = vsnprintf(NULL, 0, format, args); |
492 | vsnprintf(error, 256, format, args); | ||
493 | } | ||
494 | va_end(args); | 492 | va_end(args); |
493 | if (slen > 0) { | ||
494 | error = malloc(slen + 1); | ||
495 | if (error != NULL) { | ||
496 | va_start(args, format); | ||
497 | vsnprintf(error, slen + 1, format, args); | ||
498 | va_end(args); | ||
499 | } | ||
500 | } | ||
495 | results->error = error; | 501 | results->error = error; |
496 | } else { | 502 | } else { |
497 | results->error = NULL; | 503 | results->error = NULL; |