]> granicus.if.org Git - php/commitdiff
Fix precondition
authorMarcus Boerger <helly@php.net>
Sat, 31 May 2003 15:22:42 +0000 (15:22 +0000)
committerMarcus Boerger <helly@php.net>
Sat, 31 May 2003 15:22:42 +0000 (15:22 +0000)
ext/spl/spl_foreach.c

index 6476a8246170c2e83070196d5c44d94a82f8974e..ca3920a1b04fae9bcfaca3660f1c6415b05f8a00 100755 (executable)
@@ -54,14 +54,16 @@ ZEND_EXECUTE_HOOK_FUNCTION(ZEND_FE_RESET)
        zval **obj, *retval;
        spl_foreach_proxy proxy;
        zend_class_entry *instance_ce;
-       spl_is_a is_a = 0;
+       spl_is_a is_a;
 
        obj = spl_get_zval_ptr_ptr(&EX(opline)->op1, EX(Ts) TSRMLS_CC);
 
-       if (obj && (instance_ce = spl_get_class_entry(*obj TSRMLS_CC)) != NULL) {
-               is_a = spl_implements(instance_ce);
+       if (!obj || (instance_ce = spl_get_class_entry(*obj TSRMLS_CC)) == NULL) {
+               ZEND_EXECUTE_HOOK_ORIGINAL(ZEND_FE_RESET);
        }
 
+       is_a = spl_implements(instance_ce);
+
        if (is_a & SPL_IS_A_ITERATOR) {
                spl_unlock_zval_ptr_ptr(&EX(opline)->op1, EX(Ts) TSRMLS_CC);
                spl_begin_method_call_ex(obj, NULL, NULL, "new_iterator", sizeof("new_iterator")-1, &retval TSRMLS_CC);