]> granicus.if.org Git - php/commitdiff
don't return long path prefix to script
authorAnatol Belski <ab@php.net>
Fri, 22 Jul 2016 15:04:33 +0000 (17:04 +0200)
committerAnatol Belski <ab@php.net>
Sat, 23 Jul 2016 19:11:27 +0000 (21:11 +0200)
win32/ioutil.c

index 768239ca2d2ef526117bf15a0e9034a6ed1bea49..ee298e7d803d2e992c162d79ec6fd2a19bcf19a1 100644 (file)
@@ -488,7 +488,11 @@ PW32IO size_t php_win32_ioutil_dirname(char *path, size_t len)
        *(endw+1) = L'\0';
 
        ret_len = (endw + 1 - startw);
-       ret = php_win32_ioutil_conv_w_to_any(startw, ret_len, &ret_len);
+       if (PHP_WIN32_IOUTIL_IS_LONG_PATHW(startw, ret_len)) {
+               ret = php_win32_ioutil_conv_w_to_any(startw + PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW, ret_len - PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW, &ret_len);
+       } else {
+               ret = php_win32_ioutil_conv_w_to_any(startw, ret_len, &ret_len);
+       }
        memmove(start, ret, ret_len+1);
        assert(start[ret_len] == '\0');
        free(ret);