diff options
| author | Marcus Boerger <helly@php.net> | 2003-05-31 15:22:42 +0000 |
|---|---|---|
| committer | Marcus Boerger <helly@php.net> | 2003-05-31 15:22:42 +0000 |
| commit | 80bdb812e1051b2321922813859345397cfb2c04 (patch) | |
| tree | 2642efb4ecb362a4ada9099b518d1dfa846e7479 | |
| parent | 7d78168c7b6407ca2734e09d6d5f2f628837085d (diff) | |
| download | php-git-80bdb812e1051b2321922813859345397cfb2c04.tar.gz | |
Fix precondition
| -rwxr-xr-x | ext/spl/spl_foreach.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/ext/spl/spl_foreach.c b/ext/spl/spl_foreach.c index 6476a82461..ca3920a1b0 100755 --- a/ext/spl/spl_foreach.c +++ b/ext/spl/spl_foreach.c @@ -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); |
