diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-11 15:50:33 +0100 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-11 15:50:47 +0100 |
| commit | 4da67537c1bb5909e2f32c81534e316bff1af2f8 (patch) | |
| tree | 4e0b51fcc43ca55b823f906d3a6f086d361c331c /ext/spl/spl_directory.c | |
| parent | be64a06b1cf37a560384ee568498f870e77be168 (diff) | |
| parent | ec28d4c247ef3c7ab9af41ff6e26b802694492b2 (diff) | |
| download | php-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.c | 19 |
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; } } /* }}} */ |
