From 5dc2cef370885c552c20f3ff44bccd402850de9e Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Fri, 31 Aug 2012 11:22:43 +0800 Subject: [PATCH] Fixed bug #62976 (Notice: could not be converted to int when comparing some builtin classes) --- NEWS | 2 ++ Zend/zend_operators.c | 3 +++ tests/lang/compare_objects_basic2.phpt | 8 ++------ 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index 2ef6084e99..a6e05be568 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,8 @@ PHP NEWS ?? ??? 2012, PHP 5.3.16 - Core: + . Fixed bug #62976 (Notice: could not be converted to int when comparing + some builtin classes). (Laruence) . Fixed bug (segfault while build with zts and GOTO vm-kind). (Laruence) . Fixed bug #62955 (Only one directive is loaded from "Per Directory Values" Windows registry). (aserbulov at parallels dot com) diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index e6fe67e764..aea63faedd 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1489,6 +1489,9 @@ ZEND_API int compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* { ret = compare_function(result, op1, op_free TSRMLS_CC); zend_free_obj_get_result(op_free TSRMLS_CC); return ret; + } else if (Z_TYPE_P(op1) == IS_OBJECT) { + ZVAL_LONG(result, 1); + return SUCCESS; } } if (!converted) { diff --git a/tests/lang/compare_objects_basic2.phpt b/tests/lang/compare_objects_basic2.phpt index a2c34d06ad..7e4786cd28 100644 --- a/tests/lang/compare_objects_basic2.phpt +++ b/tests/lang/compare_objects_basic2.phpt @@ -20,9 +20,5 @@ var_dump($obj1 == $obj2); ===DONE=== --EXPECTF-- Simple test comparing two objects with different compare callback handler - -Notice: Object of class X could not be converted to int in %s on line %d - -Notice: Object of class DateTime could not be converted to int in %s on line %d -bool(true) -===DONE=== \ No newline at end of file +bool(false) +===DONE=== -- 2.49.0