cvs: ZendEngine2(PHP_5_2) / zend.c zend_API.c

From: Date: Fri, 12 May 2006 00:21:00 +0000
Subject: cvs: ZendEngine2(PHP_5_2) / zend.c zend_API.c
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-4870@lists.php.net to get a copy of this message
helly Fri May 12 00:21:00 2006 UTC Modified files: (Branch: PHP_5_2) /ZendEngine2 zend.c zend_API.c Log: - Missing __toString() pieces http://cvs.php.net/viewcvs.cgi/ZendEngine2/zend.c?r1=1.308.2.12.2.5&r2=1.308.2.12.2.6&diff_format=u Index: ZendEngine2/zend.c diff -u ZendEngine2/zend.c:1.308.2.12.2.5 ZendEngine2/zend.c:1.308.2.12.2.6 --- ZendEngine2/zend.c:1.308.2.12.2.5 Thu May 11 22:41:37 2006 +++ ZendEngine2/zend.c Fri May 12 00:21:00 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend.c,v 1.308.2.12.2.5 2006/05/11 22:41:37 tony2001 Exp $ */ +/* $Id: zend.c,v 1.308.2.12.2.6 2006/05/12 00:21:00 helly Exp $ */ #include "zend.h" #include "zend_extensions.h" @@ -221,31 +221,30 @@ { 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) { + if(Z_OBJ_HANDLER_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 (Z_OBJ_HT_P(expr) == &std_object_handlers || !Z_OBJ_HANDLER_P(expr, cast_object)) { if (zend_std_cast_object_tostring(expr, expr_copy, IS_STRING TSRMLS_CC) == SUCCESS) { break; } - } else { - if(Z_OBJ_HANDLER_P(expr, get)) { - zval *z = Z_OBJ_HANDLER_P(expr, get)(expr TSRMLS_CC); + } + if (!Z_OBJ_HANDLER_P(expr, cast_object) && Z_OBJ_HANDLER_P(expr, get)) { + zval *z = Z_OBJ_HANDLER_P(expr, get)(expr TSRMLS_CC); - z->refcount++; - if(Z_TYPE_P(z) != IS_OBJECT) { - zend_make_printable_zval(z, expr_copy, use_copy); - if (*use_copy) { - zval_ptr_dtor(&z); - } else { - ZVAL_ZVAL(expr_copy, z, 0, 1); - *use_copy = 1; - } - return; + z->refcount++; + if(Z_TYPE_P(z) != IS_OBJECT) { + zend_make_printable_zval(z, expr_copy, use_copy); + if (*use_copy) { + zval_ptr_dtor(&z); + } else { + ZVAL_ZVAL(expr_copy, z, 0, 1); + *use_copy = 1; } - zval_ptr_dtor(&z); + return; } + zval_ptr_dtor(&z); } zend_error(EG(exception) ? E_ERROR : E_RECOVERABLE_ERROR, "Object of class %s could not be converted to string", Z_OBJCE_P(expr)->name); expr_copy->value.str.len = 0; http://cvs.php.net/viewcvs.cgi/ZendEngine2/zend_API.c?r1=1.296.2.27.2.5&r2=1.296.2.27.2.6&diff_format=u Index: ZendEngine2/zend_API.c diff -u ZendEngine2/zend_API.c:1.296.2.27.2.5 ZendEngine2/zend_API.c:1.296.2.27.2.6 --- ZendEngine2/zend_API.c:1.296.2.27.2.5 Thu May 11 21:03:14 2006 +++ ZendEngine2/zend_API.c Fri May 12 00:21:00 2006 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_API.c,v 1.296.2.27.2.5 2006/05/11 21:03:14 helly Exp $ */ +/* $Id: zend_API.c,v 1.296.2.27.2.6 2006/05/12 00:21:00 helly Exp $ */ #include "zend.h" #include "zend_execute.h" @@ -368,7 +368,7 @@ } } /* Standard PHP objects */ - if (Z_OBJ_HT_PP(arg) == &std_object_handlers || !Z_OBJ_HT_PP(arg)->cast_object) { + if (Z_OBJ_HT_PP(arg) == &std_object_handlers || !Z_OBJ_HANDLER_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); @@ -376,6 +376,26 @@ break; } } +#if 1||MBO_0 + if (!Z_OBJ_HANDLER_PP(arg, cast_object) && Z_OBJ_HANDLER_PP(arg, get)) { + int use_copy; + zval *z = Z_OBJ_HANDLER_PP(arg, get)(*arg TSRMLS_CC); + + z->refcount++; + if(Z_TYPE_P(z) != IS_OBJECT) { + zval_dtor(*arg); + Z_TYPE_P(*arg) = IS_NULL; + zend_make_printable_zval(z, *arg, &use_copy); + if (!use_copy) { + ZVAL_ZVAL(*arg, z, 1, 1); + } + *pl = Z_STRLEN_PP(arg); + *p = Z_STRVAL_PP(arg); + break; + } + zval_ptr_dtor(&z); + } +#endif } case IS_ARRAY:

« previous php.zend-engine.cvs (#4870) next »