mirror of
https://github.com/php/php-src.git
synced 2024-09-22 18:37:25 +00:00
- improve r316420 (SplFileObject cannot and should not accept directories)
This commit is contained in:
parent
e81fed3df5
commit
38c698c062
@ -251,7 +251,18 @@ static void spl_filesystem_dir_open(spl_filesystem_object* intern, char *path TS
|
||||
|
||||
static int spl_filesystem_file_open(spl_filesystem_object *intern, int use_include_path, int silent TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
zval tmp;
|
||||
|
||||
intern->type = SPL_FS_FILE;
|
||||
|
||||
php_stat(intern->file_name, intern->file_name_len, FS_IS_DIR, &tmp TSRMLS_CC);
|
||||
if (Z_LVAL(tmp)) {
|
||||
intern->u.file.open_mode = NULL;
|
||||
intern->file_name = NULL;
|
||||
zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Cannot use SplFileObject with directories");
|
||||
return;
|
||||
}
|
||||
|
||||
intern->u.file.context = php_stream_context_from_zval(intern->u.file.zcontext, 0);
|
||||
intern->u.file.stream = php_stream_open_wrapper_ex(intern->file_name, intern->u.file.open_mode, (use_include_path ? USE_PATH : 0) | REPORT_ERRORS, NULL, intern->u.file.context);
|
||||
|
||||
@ -2254,7 +2265,7 @@ SPL_METHOD(SplFileObject, __construct)
|
||||
zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Cannot use SplFileObject with directories");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (spl_filesystem_file_open(intern, use_include_path, 0 TSRMLS_CC) == SUCCESS) {
|
||||
tmp_path_len = strlen(intern->u.file.stream->orig_path);
|
||||
|
||||
|
@ -33,8 +33,12 @@ function test($name, $lc, $lp)
|
||||
} catch (LogicException $e) {
|
||||
echo "LogicException: ".$e->getMessage()."\n";
|
||||
}
|
||||
$fo = $o->openFile();
|
||||
var_dump($fo->getPathName(), $fo->getFileName(), $fo->getPath());
|
||||
try {
|
||||
$fo = $o->openFile();
|
||||
var_dump($fo->getPathName(), $fo->getFileName(), $fo->getPath());
|
||||
} catch (LogicException $e) {
|
||||
echo "LogicException: ".$e->getMessage()."\n";
|
||||
}
|
||||
}
|
||||
|
||||
test(dirname(__FILE__) . '/' . 'fileobject_001a.txt', 't', substr(dirname(__FILE__),-1));
|
||||
@ -88,9 +92,7 @@ bool(false)
|
||||
bool(true)
|
||||
bool(true)
|
||||
LogicException: Cannot use SplFileObject with directories
|
||||
string(%d) "%stests"
|
||||
string(%d) "tests"
|
||||
string(%d) "%sspl"
|
||||
LogicException: Cannot use SplFileObject with directories
|
||||
===2===
|
||||
object(SplFileInfo)#%d (2) {
|
||||
["pathName":"SplFileInfo":private]=>
|
||||
@ -108,7 +110,5 @@ bool(false)
|
||||
bool(true)
|
||||
bool(true)
|
||||
LogicException: Cannot use SplFileObject with directories
|
||||
string(%d) "%stests"
|
||||
string(5) "tests"
|
||||
string(%d) "%sspl"
|
||||
LogicException: Cannot use SplFileObject with directories
|
||||
===DONE===
|
||||
|
Loading…
Reference in New Issue
Block a user