diff --git a/TSRM/tsrm_virtual_cwd.c b/TSRM/tsrm_virtual_cwd.c index ec729465cab..da6a380bb2a 100644 --- a/TSRM/tsrm_virtual_cwd.c +++ b/TSRM/tsrm_virtual_cwd.c @@ -491,6 +491,7 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func int use_relative_path = 0; #ifdef TSRM_WIN32 int is_unc; + int exists; #endif TSRMLS_FETCH(); @@ -589,6 +590,7 @@ no_realpath: CWD_STATE_COPY(&old_state, state); #ifdef TSRM_WIN32 + exists = (use_realpath != CWD_EXPAND); ret = 0; is_unc = 0; if (path_length >= 2 && path[1] == ':') { @@ -696,13 +698,16 @@ no_realpath: ptr_length = length; FindClose(hFind); ret = 0; - } else if (use_realpath == CWD_REALPATH) { + } else { if (is_unc) { /* skip share name */ is_unc--; ret = 0; } else { - ret = 1; + exists = 0; + if (use_realpath == CWD_REALPATH) { + ret = 1; + } } } } @@ -743,7 +748,7 @@ no_realpath: /* Store existent file in realpath cache. */ #ifdef TSRM_WIN32 - if (use_cache && !is_unc && (use_realpath == CWD_REALPATH)) { + if (use_cache && !is_unc && exists) { #else if (use_cache && (use_realpath == CWD_REALPATH)) { #endif