diff options
-rw-r--r-- | ext/spl/spl_directory.c | 15 | ||||
-rw-r--r-- | ext/spl/tests/bug79987.phpt | 19 |
2 files changed, 34 insertions, 0 deletions
diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index a67b9efb03..3d0dae2435 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -899,6 +899,11 @@ PHP_METHOD(SplFileInfo, getFilename) RETURN_THROWS(); } + if (!intern->file_name) { + zend_throw_error(NULL, "Object not initialized"); + RETURN_THROWS(); + } + spl_filesystem_object_get_path(intern, &path_len); if (path_len && path_len < intern->file_name_len) { @@ -937,6 +942,11 @@ PHP_METHOD(SplFileInfo, getExtension) RETURN_THROWS(); } + if (!intern->file_name) { + zend_throw_error(NULL, "Object not initialized"); + RETURN_THROWS(); + } + spl_filesystem_object_get_path(intern, &path_len); if (path_len && path_len < intern->file_name_len) { @@ -1000,6 +1010,11 @@ PHP_METHOD(SplFileInfo, getBasename) RETURN_THROWS(); } + if (!intern->file_name) { + zend_throw_error(NULL, "Object not initialized"); + RETURN_THROWS(); + } + spl_filesystem_object_get_path(intern, &path_len); if (path_len && path_len < intern->file_name_len) { diff --git a/ext/spl/tests/bug79987.phpt b/ext/spl/tests/bug79987.phpt index bda5841ee7..b6ea8e2a9c 100644 --- a/ext/spl/tests/bug79987.phpt +++ b/ext/spl/tests/bug79987.phpt @@ -15,5 +15,24 @@ try { } catch (Throwable $e) { echo $e->getMessage() . "\n"; } +try { + var_dump($x->getFilename()); +} catch (Throwable $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($x->getExtension()); +} catch (Throwable $e) { + echo $e->getMessage() . "\n"; +} +try { + var_dump($x->getBasename()); +} catch (Throwable $e) { + echo $e->getMessage() . "\n"; +} +?> --EXPECT-- Object not initialized +Object not initialized +Object not initialized +Object not initialized |