From 550db707af683b8474e51835b7a7c522715bc557 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Fri, 23 Mar 2007 22:44:28 +0000 Subject: [PATCH] a little realloc never hurt anyone. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4756 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_apr.c | 27 +++++++++++++++++++++++++-- src/switch_console.c | 2 +- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/switch_apr.c b/src/switch_apr.c index 61c5031909..31e2172d7c 100644 --- a/src/switch_apr.c +++ b/src/switch_apr.c @@ -657,8 +657,31 @@ SWITCH_DECLARE(int) switch_vasprintf(char **buf, const char *format, va_list ap) #ifdef HAVE_VASPRINTF return vasprintf(buf, format, ap); #else - *buf = (char *) malloc(2048); - return vsnprintf(*buf, 2048, format, ap); + size_t block_size = 1024; + int ret = -1; + int count = 1; + *buf = (char *) malloc(block_size); + + if (*buf == NULL) { + return -1; + } + + while (ret == -1 && count < 10) { + ret = vsnprintf(*buf, block_size*count, format, ap); + if (ret == -1) { + void *new_buf; + count++; + new_buf = realloc(*buf, block_size*count); + if (new_buf == NULL) { + *buf = NULL; + return -1; + } else { + *buf = new_buf; + } + } + } + return ret; + #endif } diff --git a/src/switch_console.c b/src/switch_console.c index cd61ce413b..e3347cfe96 100644 --- a/src/switch_console.c +++ b/src/switch_console.c @@ -41,7 +41,7 @@ SWITCH_DECLARE(switch_status_t) switch_console_stream_write(switch_stream_handle char *buf = handle->data; char *end = handle->end; int ret = 0; - char *data; + char *data = NULL; if (handle->data_len >= handle->data_size) { return SWITCH_STATUS_FALSE;