From: Arnaud Le Blanc Date: Thu, 11 Sep 2008 15:31:48 +0000 (+0000) Subject: Fixed #46053 (SplFileObject::seek - Endless loop) X-Git-Tag: BEFORE_HEAD_NS_CHANGE~428 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f49c3c98bc11f182122b00e70cfb17a07c784981;p=php Fixed #46053 (SplFileObject::seek - Endless loop) --- diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index 40f196266a..1da3ae9f1f 100755 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -2612,7 +2612,9 @@ SPL_METHOD(SplFileObject, seek) spl_filesystem_file_rewind(getThis(), intern TSRMLS_CC); while(intern->u.file.current_line_num < line_pos) { - spl_filesystem_file_read_line(getThis(), intern, 1 TSRMLS_CC); + if (spl_filesystem_file_read_line(getThis(), intern, 1 TSRMLS_CC) == FAILURE) { + break; + } } } /* }}} */ diff --git a/ext/spl/tests/bug46053.phpt b/ext/spl/tests/bug46053.phpt new file mode 100644 index 0000000000..75da7f3bbf --- /dev/null +++ b/ext/spl/tests/bug46053.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #46053 (SplFileObject::seek - Endless loop) +--FILE-- +getPathName(); +$x->seek(10); +$x->seek(0); +var_dump(trim($x->fgets())); +--EXPECTF-- +string(%d) "