diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2019-12-02 11:29:32 +0100 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2019-12-02 11:29:58 +0100 |
commit | a9e45bc0fb77aaf439642b4c0979ed65237bfdd0 (patch) | |
tree | 25537c0c541e42f2fecbf7b74cfbe61b96db33c5 /win32 | |
parent | 4ff242a9a7ee323de84a0c69dce115c72441fb19 (diff) | |
parent | bb735c9e9e4a2ca2686a141ffe867f60ee0053c3 (diff) | |
download | php-git-a9e45bc0fb77aaf439642b4c0979ed65237bfdd0.tar.gz |
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fix #78296: is_file fails to detect file
Diffstat (limited to 'win32')
-rw-r--r-- | win32/ioutil.c | 12 | ||||
-rw-r--r-- | win32/ioutil.h | 10 |
2 files changed, 20 insertions, 2 deletions
diff --git a/win32/ioutil.c b/win32/ioutil.c index f7db410dd2..ce4fc9b65c 100644 --- a/win32/ioutil.c +++ b/win32/ioutil.c @@ -322,13 +322,23 @@ PW32IO int php_win32_ioutil_mkdir_w(const wchar_t *path, mode_t mode) if (!PHP_WIN32_IOUTIL_IS_LONG_PATHW(tmp, path_len)) { wchar_t *_tmp = (wchar_t *) malloc((path_len + PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW + 1) * sizeof(wchar_t)); + wchar_t *src, *dst; if (!_tmp) { SET_ERRNO_FROM_WIN32_CODE(ERROR_NOT_ENOUGH_MEMORY); free(tmp); return -1; } memmove(_tmp, PHP_WIN32_IOUTIL_LONG_PATH_PREFIXW, PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW * sizeof(wchar_t)); - memmove(_tmp+PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW, tmp, path_len * sizeof(wchar_t)); + src = tmp; + dst = _tmp + PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW; + while (src < tmp + path_len) { + if (*src == PHP_WIN32_IOUTIL_FW_SLASHW) { + *dst++ = PHP_WIN32_IOUTIL_DEFAULT_SLASHW; + src++; + } else { + *dst++ = *src++; + } + } path_len += PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW; _tmp[path_len] = L'\0'; free(tmp); diff --git a/win32/ioutil.h b/win32/ioutil.h index 34104a3f45..93dea15967 100644 --- a/win32/ioutil.h +++ b/win32/ioutil.h @@ -220,8 +220,16 @@ __forceinline static wchar_t *php_win32_ioutil_conv_any_to_w(const char* in, siz memmove(ret, mb, mb_len * sizeof(wchar_t)); ret[mb_len] = L'\0'; } else { + wchar_t *src = mb, *dst = ret + PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW; memmove(ret, PHP_WIN32_IOUTIL_LONG_PATH_PREFIXW, PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW * sizeof(wchar_t)); - memmove(ret+PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW, mb, mb_len * sizeof(wchar_t)); + while (src < mb + mb_len) { + if (*src == PHP_WIN32_IOUTIL_FW_SLASHW) { + *dst++ = PHP_WIN32_IOUTIL_DEFAULT_SLASHW; + src++; + } else { + *dst++ = *src++; + } + } ret[mb_len + PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW] = L'\0'; mb_len += PHP_WIN32_IOUTIL_LONG_PATH_PREFIX_LENW; |