From adabdede5e4cc039ebb7e128f3ed42fa4697c845 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 4 Jul 2011 14:55:39 +0000 Subject: [PATCH] Fixed bug #53727 (Inconsistent behavior of is_subclass_of with interfaces) --- Zend/tests/bug53727.phpt | 22 +++++++++++++ Zend/tests/is_a.phpt | 2 +- Zend/zend_builtin_functions.c | 31 ++++--------------- .../class_object/is_a_variation_001.phpt | 8 +++++ 4 files changed, 37 insertions(+), 26 deletions(-) create mode 100644 Zend/tests/bug53727.phpt diff --git a/Zend/tests/bug53727.phpt b/Zend/tests/bug53727.phpt new file mode 100644 index 00000000000..22cd5232c7c --- /dev/null +++ b/Zend/tests/bug53727.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #53727 (Inconsistent behavior of is_subclass_of with interfaces) +--FILE-- +parent; - } else { - instance_ce = instance_ce->parent; - } - } else { - instance_ce = Z_OBJCE_P(obj); - } - - if (!instance_ce) { - RETURN_FALSE; - } - - if (instanceof_function(instance_ce, *ce TSRMLS_CC)) { - retval = 1; - } else { + if (only_subclass && instance_ce == *ce) { retval = 0; + } else { + retval = instanceof_function(instance_ce, *ce TSRMLS_CC); } } diff --git a/ext/standard/tests/class_object/is_a_variation_001.phpt b/ext/standard/tests/class_object/is_a_variation_001.phpt index d2d6ce24071..1021544065b 100644 --- a/ext/standard/tests/class_object/is_a_variation_001.phpt +++ b/ext/standard/tests/class_object/is_a_variation_001.phpt @@ -144,15 +144,23 @@ Arg value bool(false) Arg value + +Warning: Unknown class passed as parameter in %sis_a_variation_001.php on line %d bool(false) Arg value + +Warning: Unknown class passed as parameter in %sis_a_variation_001.php on line %d bool(false) Arg value string + +Warning: Unknown class passed as parameter in %sis_a_variation_001.php on line %d bool(false) Arg value String + +Warning: Unknown class passed as parameter in %sis_a_variation_001.php on line %d bool(false) Arg value