diff options
Diffstat (limited to 'sway/commands.c')
-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, } results->status = status; if (format) { - char *error = malloc(256); + char *error = NULL; va_list args; va_start(args, format); - if (error) { - vsnprintf(error, 256, format, args); - } + int slen = vsnprintf(NULL, 0, format, args); va_end(args); + if (slen > 0) { + error = malloc(slen + 1); + if (error != NULL) { + va_start(args, format); + vsnprintf(error, slen + 1, format, args); + va_end(args); + } + } results->error = error; } else { results->error = NULL; |