summaryrefslogtreecommitdiff
path: root/ext/spl/spl_directory.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-02-11 15:50:33 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-02-11 15:50:47 +0100
commit4da67537c1bb5909e2f32c81534e316bff1af2f8 (patch)
tree4e0b51fcc43ca55b823f906d3a6f086d361c331c /ext/spl/spl_directory.c
parentbe64a06b1cf37a560384ee568498f870e77be168 (diff)
parentec28d4c247ef3c7ab9af41ff6e26b802694492b2 (diff)
downloadphp-git-4da67537c1bb5909e2f32c81534e316bff1af2f8.tar.gz
Merge branch 'PHP-7.2' into PHP-7.3
Diffstat (limited to 'ext/spl/spl_directory.c')
-rw-r--r--ext/spl/spl_directory.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c
index a057b22c08..0f0da14c15 100644
--- a/ext/spl/spl_directory.c
+++ b/ext/spl/spl_directory.c
@@ -212,12 +212,21 @@ static inline void spl_filesystem_object_get_file_name(spl_filesystem_object *in
}
break;
case SPL_FS_DIR:
- if (intern->file_name) {
- efree(intern->file_name);
+ {
+ size_t path_len = 0;
+ char *path = spl_filesystem_object_get_path(intern, &path_len);
+ if (intern->file_name) {
+ efree(intern->file_name);
+ }
+ /* if there is parent path, ammend it, otherwise just use the given path as is */
+ if (path_len == 0) {
+ intern->file_name_len = spprintf(
+ &intern->file_name, 0, "%s", intern->u.dir.entry.d_name);
+ } else {
+ intern->file_name_len = spprintf(
+ &intern->file_name, 0, "%s%c%s", path, slash, intern->u.dir.entry.d_name);
+ }
}
- intern->file_name_len = spprintf(&intern->file_name, 0, "%s%c%s",
- spl_filesystem_object_get_path(intern, NULL),
- slash, intern->u.dir.entry.d_name);
break;
}
} /* }}} */