diff options
author | Marcus Boerger <helly@php.net> | 2003-12-29 22:26:48 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2003-12-29 22:26:48 +0000 |
commit | 2fc7a07e62cff942c1aaf2ea050f7163abdac70a (patch) | |
tree | 780a544e2a07061f36cd3fc717f7bfc8a8285f8e /ext/standard/formatted_print.c | |
parent | c6755e8394a221cd225e252a2d792bd574d38b69 (diff) | |
download | php-git-2fc7a07e62cff942c1aaf2ea050f7163abdac70a.tar.gz |
Use __tostring() in all printing functions.
Diffstat (limited to 'ext/standard/formatted_print.c')
-rw-r--r-- | ext/standard/formatted_print.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/ext/standard/formatted_print.c b/ext/standard/formatted_print.c index 4d141afc45..85ed45abeb 100644 --- a/ext/standard/formatted_print.c +++ b/ext/standard/formatted_print.c @@ -622,15 +622,27 @@ php_formatted_print(int ht, int *len, int use_array, int format_offset TSRMLS_DC PRINTF_DEBUG(("sprintf: format character='%c'\n", format[inpos])); /* now we expect to find a type specifier */ switch (format[inpos]) { - case 's': - convert_to_string_ex(args[argnum]); + case 's': { + zval *var, var_copy; + int use_copy; + + zend_make_printable_zval(*args[argnum], &var_copy, &use_copy); + if (use_copy) { + var = &var_copy; + } else { + var = *args[argnum]; + } php_sprintf_appendstring(&result, &outpos, &size, - Z_STRVAL_PP(args[argnum]), + Z_STRVAL_P(var), width, precision, padding, alignment, - Z_STRLEN_PP(args[argnum]), + Z_STRLEN_P(var), 0, expprec); + if (use_copy) { + zval_dtor(&var_copy); + } break; + } case 'd': convert_to_long_ex(args[argnum]); |