mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Using zend_spprintf should be faster here
This commit is contained in:
parent
d45fd8a1b1
commit
ade319ac54
2 changed files with 20 additions and 18 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue