Index: ext/spl/spl_iterators.c =================================================================== RCS file: /repository/php-src/ext/spl/spl_iterators.c,v retrieving revision 1.73.2.30.2.3 diff -u -p -d -r1.73.2.30.2.3 spl_iterators.c --- ext/spl/spl_iterators.c 10 May 2006 16:50:57 -0000 1.73.2.30.2.3 +++ ext/spl/spl_iterators.c 12 May 2006 09:25:32 -0000 @@ -2395,11 +2395,20 @@ PHP_FUNCTION(iterator_to_array) if (iter->funcs->rewind) { iter->funcs->rewind(iter TSRMLS_CC); } + if (EG(exception)) { + return; + } while (iter->funcs->valid(iter TSRMLS_CC) == SUCCESS) { iter->funcs->get_current_data(iter, &data TSRMLS_CC); + if (EG(exception)) { + return; + } (*data)->refcount++; if (iter->funcs->get_current_key) { key_type = iter->funcs->get_current_key(iter, &str_key, &str_key_len, &int_key TSRMLS_CC); + if (EG(exception)) { + return; + } switch(key_type) { case HASH_KEY_IS_STRING: add_assoc_zval_ex(return_value, str_key, str_key_len, *data); @@ -2413,8 +2422,14 @@ PHP_FUNCTION(iterator_to_array) add_next_index_zval(return_value, *data); } iter->funcs->move_forward(iter TSRMLS_CC); + if (EG(exception)) { + return; + } } iter->funcs->dtor(iter TSRMLS_CC); + if (EG(exception)) { + return; + } } /* }}} */