summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend.c3
-rw-r--r--Zend/zend_object_handlers.c6
-rw-r--r--Zend/zend_object_handlers.h1
-rw-r--r--Zend/zend_operators.c8
4 files changed, 9 insertions, 9 deletions
diff --git a/Zend/zend.c b/Zend/zend.c
index 4fc4fdcb21..bd188c1e26 100644
--- a/Zend/zend.c
+++ b/Zend/zend.c
@@ -216,7 +216,8 @@ ZEND_API void zend_make_printable_zval(zval *expr, zval *expr_copy, int *use_cop
case IS_OBJECT:
if (expr->value.obj.handlers->cast_object) {
TSRMLS_FETCH();
- if (expr->value.obj.handlers->cast_object == zend_std_cast_object) {
+ /* Standard PHP objects */
+ if (expr->value.obj.handlers == &std_object_handlers) {
if (zend_std_cast_object_tostring(expr, expr_copy, IS_STRING, 0 TSRMLS_CC) == SUCCESS) {
break;
}
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index b6645a8ebf..1812a31aa4 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -945,10 +945,6 @@ ZEND_API int zend_std_cast_object_tostring(zval *readobj, zval *writeobj, int ty
return FAILURE;
}
-int zend_std_cast_object(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC)
-{
- return FAILURE;
-}
ZEND_API zend_object_handlers std_object_handlers = {
zend_objects_store_add_ref, /* add_ref */
@@ -973,7 +969,7 @@ ZEND_API zend_object_handlers std_object_handlers = {
zend_std_object_get_class, /* get_class_entry */
zend_std_object_get_class_name, /* get_class_name */
zend_std_compare_objects, /* compare_objects */
- zend_std_cast_object, /* cast_object */
+ NULL, /* cast_object */
};
/*
diff --git a/Zend/zend_object_handlers.h b/Zend/zend_object_handlers.h
index 2f414c22d3..a9ad231fb8 100644
--- a/Zend/zend_object_handlers.h
+++ b/Zend/zend_object_handlers.h
@@ -129,7 +129,6 @@ ZEND_API union _zend_function *zend_std_get_static_method(zend_class_entry *ce,
ZEND_API zval **zend_std_get_static_property(zend_class_entry *ce, char *property_name, int property_name_len, zend_bool silent TSRMLS_DC);
ZEND_API zend_bool zend_std_unset_static_property(zend_class_entry *ce, char *property_name, int property_name_len TSRMLS_DC);
-int zend_std_cast_object(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC);
ZEND_API int zend_std_cast_object_tostring(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC);
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index 8698df2096..4f23d757a7 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -203,7 +203,9 @@ ZEND_API void convert_scalar_to_number(zval *op TSRMLS_DC)
(holder).value.lval = (zend_hash_num_elements((op)->value.ht)?1:0); \
break; \
case IS_OBJECT: \
- (holder).value.lval = 1; /* TBI!! */ \
+ (holder) = (*(op)); \
+ zval_copy_ctor(&(holder)); \
+ convert_to_long(&(holder)); \
break; \
case IS_BOOL: \
case IS_RESOURCE: \
@@ -246,7 +248,9 @@ ZEND_API void convert_scalar_to_number(zval *op TSRMLS_DC)
(holder).value.lval = (zend_hash_num_elements((op)->value.ht)?1:0); \
break; \
case IS_OBJECT: \
- (holder).value.lval = 1; /* TBI!! */ \
+ (holder) = (*(op)); \
+ zval_copy_ctor(&(holder)); \
+ convert_to_boolean(&(holder)); \
break; \
default: \
(holder).value.lval = 0; \