Using zend_spprintf should be faster here

This commit is contained in:
Marcus Boerger 2003-08-31 10:06:13 +00:00
parent d45fd8a1b1
commit ade319ac54
2 changed files with 20 additions and 18 deletions

View file

@ -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;
}

View file

@ -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;
}