From: Stanislav Malyshev Date: Mon, 19 Oct 2015 00:20:00 +0000 (-0700) Subject: Merge branch 'PHP-5.6' into PHP-7.0 X-Git-Tag: php-7.0.1RC1~220 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=26e5429f721b40d6d721fa9e2e2ede5f6222798c;p=php Merge branch 'PHP-5.6' into PHP-7.0 * PHP-5.6: Fix bug #64172 Bug #70561: Fix DirectoryIterator to throw OutOfBoundsException Conflicts: ext/pdo/pdo_dbh.c --- 26e5429f721b40d6d721fa9e2e2ede5f6222798c diff --cc ext/spl/spl_directory.c index 5090a0b1ac,7fb4ecd147..a330ac42ff --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@@ -828,15 -838,20 +828,16 @@@ SPL_METHOD(DirectoryIterator, seek while (intern->u.dir.index < pos) { int valid = 0; - zend_call_method_with_0_params(&this_ptr, Z_OBJCE_P(getThis()), &intern->u.dir.func_valid, "valid", &retval); - if (retval) { - valid = zend_is_true(retval); + zend_call_method_with_0_params(&EX(This), Z_OBJCE(EX(This)), &intern->u.dir.func_valid, "valid", &retval); + if (!Z_ISUNDEF(retval)) { + valid = zend_is_true(&retval); zval_ptr_dtor(&retval); - retval = NULL; } if (!valid) { - break; + zend_throw_exception_ex(spl_ce_OutOfBoundsException, 0 TSRMLS_CC, "Seek position %ld is out of range", pos); + return; } - zend_call_method_with_0_params(&this_ptr, Z_OBJCE_P(getThis()), &intern->u.dir.func_next, "next", &retval); - if (retval) { - zval_ptr_dtor(&retval); - } + zend_call_method_with_0_params(&EX(This), Z_OBJCE(EX(This)), &intern->u.dir.func_next, "next", NULL); } } /* }}} */