summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xext/spl/spl_directory.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c
index 11c09a26be..da063f7736 100755
--- a/ext/spl/spl_directory.c
+++ b/ext/spl/spl_directory.c
@@ -120,9 +120,14 @@ static zend_object_value spl_ce_dir_object_new(zend_class_entry *class_type TSRM
/* open a directory resource */
static void spl_ce_dir_open(spl_ce_dir_object* intern, char *path TSRMLS_DC)
{
+ int path_len = strlen(path);
intern->dirp = php_stream_opendir(path, ENFORCE_SAFE_MODE|REPORT_ERRORS, NULL);
- intern->path = estrdup(path);
+ if (path_len && (path[path_len-1] == '/' || path[path_len-1] == '\\')) {
+ intern->path = estrndup(path, --path_len);
+ } else {
+ intern->path = estrndup(path, path_len);
+ }
intern->index = 0;
if (intern->dirp == NULL) {