cvs: ZendEngine2(PHP_5_2) / zend.c zend_API.c
| From: | Marcus Boerger | 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: