]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.6' into PHP-7.0
authorStanislav Malyshev <stas@php.net>
Mon, 19 Oct 2015 00:20:00 +0000 (17:20 -0700)
committerStanislav Malyshev <stas@php.net>
Mon, 19 Oct 2015 00:20:00 +0000 (17:20 -0700)
* PHP-5.6:
  Fix bug #64172
  Bug #70561: Fix DirectoryIterator to throw OutOfBoundsException

Conflicts:
ext/pdo/pdo_dbh.c

1  2 
ext/spl/spl_directory.c

index 5090a0b1acf2c9b0d7750e47096ce1572901daa2,7fb4ecd147f5eb82dcb9b69c69e71ba4fa7854b8..a330ac42ff2568b0cacfec94d278c560940cefaa
@@@ -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);
        }
  } /* }}} */