From 6e93eda95a44d862a49633a3163216460090f14f Mon Sep 17 00:00:00 2001 From: handyande Date: Sun, 12 Feb 2006 21:08:36 +0000 Subject: [PATCH] Mortens latest ecore_config update - fixes last breakage ;) SVN revision: 20419 --- .../src/lib/ecore_config/ecore_config_util.c | 32 ++++++++----------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/legacy/ecore/src/lib/ecore_config/ecore_config_util.c b/legacy/ecore/src/lib/ecore_config/ecore_config_util.c index 6d3f7a1057..6ee17c3725 100644 --- a/legacy/ecore/src/lib/ecore_config/ecore_config_util.c +++ b/legacy/ecore/src/lib/ecore_config/ecore_config_util.c @@ -49,9 +49,9 @@ estring_disown(estring * e) int estring_appendf(estring * e, const char *fmt, ...) { - int need; - va_list ap; - char *p; + int need; + va_list ap; + char *p; if (!e) return ECORE_CONFIG_ERR_FAIL; @@ -59,35 +59,31 @@ estring_appendf(estring * e, const char *fmt, ...) if (!e->str) { e->used = e->alloc = 0; - if (!(e->str = (char *)malloc(e->alloc = 512))) + if (!(e->str = (char *)malloc(e->alloc = CHUNKLEN))) return ECORE_CONFIG_ERR_OOM; } - retry: va_start(ap, fmt); - need = vsnprintf(e->str + e->used, e->alloc - e->used, fmt, ap); + need = vsnprintf(NULL, 0, fmt, ap); va_end(ap); - if ((need >= (e->alloc - e->used)) || (need < 0)) + if (need >= (e->alloc - e->used)) { - if (need < 0) - need = 2 * e->alloc; - else - need++; - need += e->used; - need += (CHUNKLEN - (need % CHUNKLEN)); + e->alloc = e->used + need + (CHUNKLEN - (need % CHUNKLEN)); - if (!(p = (char *)realloc(e->str, need))) - { + if (!(p = (char *)realloc(e->str, e->alloc))) + { free(e->str); e->alloc = e->used = 0; return ECORE_CONFIG_ERR_OOM; - } - e->alloc = need; + } e->str = p; - goto retry; } + va_start(ap, fmt); + need = vsnprintf(e->str + e->used, e->alloc - e->used, fmt, ap); + va_end(ap); + return e->used += need; }