summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/spl/spl_directory.c15
-rw-r--r--ext/spl/tests/bug79987.phpt19
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