From: Marcus Boerger Date: Sun, 31 Aug 2003 10:06:13 +0000 (+0000) Subject: Using zend_spprintf should be faster here X-Git-Tag: RELEASE_0_7~338 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ade319ac54f08382963bf938e956b3b22ec185ea;p=php Using zend_spprintf should be faster here --- diff --git a/Zend/zend_reflection_api.c b/Zend/zend_reflection_api.c index 4df1f9d438..21c8bf95f7 100644 --- a/Zend/zend_reflection_api.c +++ b/Zend/zend_reflection_api.c @@ -80,17 +80,18 @@ string *string_printf(string *str, const char *format, ...) { int n; va_list arg; - va_start(arg, format); - n = vsnprintf(str->string + str->len - 1, str->alloced - str->len, format, arg); - if (n > str->alloced - str->len) { - while (n + str->len > str->alloced ) { - str->alloced *= 2; - } - str->string = erealloc(str->string, str->alloced + 1); - n = vsnprintf(str->string + str->len - 1, str->alloced - str->len, format, arg); + char *s_tmp; + + va_start(arg, format); + n = zend_vspprintf(&s_tmp, 0, format, arg); + if (n) { + str->alloced += n; + str->string = erealloc(str->string, str->alloced); + memcpy(str->string + str->len - 1, s_tmp, n); + str->len += n; } + efree(s_tmp); va_end(arg); - str->len += n; return str; } diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 4df1f9d438..21c8bf95f7 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -80,17 +80,18 @@ string *string_printf(string *str, const char *format, ...) { int n; va_list arg; - va_start(arg, format); - n = vsnprintf(str->string + str->len - 1, str->alloced - str->len, format, arg); - if (n > str->alloced - str->len) { - while (n + str->len > str->alloced ) { - str->alloced *= 2; - } - str->string = erealloc(str->string, str->alloced + 1); - n = vsnprintf(str->string + str->len - 1, str->alloced - str->len, format, arg); + char *s_tmp; + + va_start(arg, format); + n = zend_vspprintf(&s_tmp, 0, format, arg); + if (n) { + str->alloced += n; + str->string = erealloc(str->string, str->alloced); + memcpy(str->string + str->len - 1, s_tmp, n); + str->len += n; } + efree(s_tmp); va_end(arg); - str->len += n; return str; }