From 5829cee24ea0e40cbe402728d1ca2f0bfb630182 Mon Sep 17 00:00:00 2001 From: "Ali H. Fardan" Date: Sun, 28 Aug 2016 19:27:01 +0300 Subject: [PATCH] used a different implementation of smprintf() imported from dwmstatus --- slstatus.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/slstatus.c b/slstatus.c index 08866d2..bc48365 100644 --- a/slstatus.c +++ b/slstatus.c @@ -79,17 +79,23 @@ static char * smprintf(const char *fmt, ...) { va_list ap; - char tmp[120]; - char *ret = NULL; + char *ret; + int len; va_start(ap, fmt); - vsnprintf(tmp, sizeof(tmp)-1, fmt, ap); - tmp[strlen(tmp)+1] = '\0'; - - if (asprintf(&ret, "%s", tmp) < 0) - return NULL; - + len = vsnprintf(NULL, 0, fmt, ap); va_end(ap); + + ret = malloc(++len); + if (ret == NULL) { + perror("malloc"); + exit(1); + } + + va_start(ap, fmt); + vsnprintf(ret, len, fmt, ap); + va_end(ap); + return ret; }