summaryrefslogtreecommitdiff
path: root/Zend/zend_object_handlers.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_object_handlers.c')
-rw-r--r--Zend/zend_object_handlers.c64
1 files changed, 30 insertions, 34 deletions
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index fb3b7509df..f678277fd2 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -1572,50 +1572,46 @@ ZEND_API int zend_std_compare_objects(zval *o1, zval *o2) /* {{{ */
zval casted;
if (Z_TYPE_P(o1) == IS_OBJECT) {
ZEND_ASSERT(Z_TYPE_P(o2) != IS_OBJECT);
- if (Z_OBJ_HT_P(o1)->cast_object) {
- zend_uchar target_type = (Z_TYPE_P(o2) == IS_FALSE || Z_TYPE_P(o2) == IS_TRUE)
- ? _IS_BOOL : Z_TYPE_P(o2);
- if (Z_OBJ_HT_P(o1)->cast_object(Z_OBJ_P(o1), &casted, target_type) == FAILURE) {
- // TODO: Less crazy.
- if (target_type == IS_LONG || target_type == IS_DOUBLE) {
- zend_error(E_NOTICE, "Object of class %s could not be converted to %s",
- ZSTR_VAL(Z_OBJCE_P(o1)->name), zend_get_type_by_const(target_type));
- if (target_type == IS_LONG) {
- ZVAL_LONG(&casted, 1);
- } else {
- ZVAL_DOUBLE(&casted, 1.0);
- }
+ zend_uchar target_type = (Z_TYPE_P(o2) == IS_FALSE || Z_TYPE_P(o2) == IS_TRUE)
+ ? _IS_BOOL : Z_TYPE_P(o2);
+ if (Z_OBJ_HT_P(o1)->cast_object(Z_OBJ_P(o1), &casted, target_type) == FAILURE) {
+ // TODO: Less crazy.
+ if (target_type == IS_LONG || target_type == IS_DOUBLE) {
+ zend_error(E_NOTICE, "Object of class %s could not be converted to %s",
+ ZSTR_VAL(Z_OBJCE_P(o1)->name), zend_get_type_by_const(target_type));
+ if (target_type == IS_LONG) {
+ ZVAL_LONG(&casted, 1);
} else {
- return 1;
+ ZVAL_DOUBLE(&casted, 1.0);
}
+ } else {
+ return 1;
}
- int ret = zend_compare(&casted, o2);
- zval_ptr_dtor(&casted);
- return ret;
}
+ int ret = zend_compare(&casted, o2);
+ zval_ptr_dtor(&casted);
+ return ret;
} else {
ZEND_ASSERT(Z_TYPE_P(o2) == IS_OBJECT);
- if (Z_OBJ_HT_P(o2)->cast_object) {
- zend_uchar target_type = (Z_TYPE_P(o1) == IS_FALSE || Z_TYPE_P(o1) == IS_TRUE)
- ? _IS_BOOL : Z_TYPE_P(o1);
- if (Z_OBJ_HT_P(o2)->cast_object(Z_OBJ_P(o2), &casted, target_type) == FAILURE) {
- // TODO: Less crazy.
- if (target_type == IS_LONG || target_type == IS_DOUBLE) {
- zend_error(E_NOTICE, "Object of class %s could not be converted to %s",
- ZSTR_VAL(Z_OBJCE_P(o2)->name), zend_get_type_by_const(target_type));
- if (target_type == IS_LONG) {
- ZVAL_LONG(&casted, 1);
- } else {
- ZVAL_DOUBLE(&casted, 1.0);
- }
+ zend_uchar target_type = (Z_TYPE_P(o1) == IS_FALSE || Z_TYPE_P(o1) == IS_TRUE)
+ ? _IS_BOOL : Z_TYPE_P(o1);
+ if (Z_OBJ_HT_P(o2)->cast_object(Z_OBJ_P(o2), &casted, target_type) == FAILURE) {
+ // TODO: Less crazy.
+ if (target_type == IS_LONG || target_type == IS_DOUBLE) {
+ zend_error(E_NOTICE, "Object of class %s could not be converted to %s",
+ ZSTR_VAL(Z_OBJCE_P(o2)->name), zend_get_type_by_const(target_type));
+ if (target_type == IS_LONG) {
+ ZVAL_LONG(&casted, 1);
} else {
- return -1;
+ ZVAL_DOUBLE(&casted, 1.0);
}
+ } else {
+ return -1;
}
- int ret = zend_compare(o1, &casted);
- zval_ptr_dtor(&casted);
- return ret;
}
+ int ret = zend_compare(o1, &casted);
+ zval_ptr_dtor(&casted);
+ return ret;
}
return ZEND_UNCOMPARABLE;
}