From: Marcus Boerger Date: Wed, 10 May 2006 19:36:47 +0000 (+0000) Subject: - Missing __tostring() conversion snippets X-Git-Tag: php-5.2.0RC1~609 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=848c5c7695ee5655f3e38a74e3cf74aa762f9de9;p=php - Missing __tostring() conversion snippets --- diff --git a/Zend/zend.c b/Zend/zend.c index 669a9becf8..076d7154c0 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -221,6 +221,9 @@ ZEND_API void zend_make_printable_zval(zval *expr, zval *expr_copy, int *use_cop { TSRMLS_FETCH(); + if(Z_OBJ_HT_P(expr)->cast_object && Z_OBJ_HANDLER_P(expr, cast_object)(expr, expr_copy, IS_STRING TSRMLS_CC) == SUCCESS) { + break; + } /* Standard PHP objects */ if (Z_OBJ_HT_P(expr) == &std_object_handlers || !Z_OBJ_HT_P(expr)->cast_object) { if (zend_std_cast_object_tostring(expr, expr_copy, IS_STRING TSRMLS_CC) == SUCCESS) { diff --git a/Zend/zend_API.c b/Zend/zend_API.c index e444090c74..c32cbdcd02 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -366,6 +366,17 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp *p = Z_STRVAL_PP(arg); break; } + zval_ptr_dtor(arg); + } + /* Standard PHP objects */ + if (Z_OBJ_HT_PP(arg) == &std_object_handlers || !Z_OBJ_HT_PP(arg)->cast_object) { + SEPARATE_ZVAL_IF_NOT_REF(arg); + if (zend_std_cast_object_tostring(*arg, *arg, IS_STRING TSRMLS_CC) == SUCCESS) { + *pl = Z_STRLEN_PP(arg); + *p = Z_STRVAL_PP(arg); + break; + } + zval_ptr_dtor(arg); } }