From: Dmitry Stogov Date: Thu, 5 Oct 2006 08:04:51 +0000 (+0000) Subject: Fixed bug #38989 (Absolute path with slash at beginning doesn't work on win) X-Git-Tag: RELEASE_1_0_0RC1~1412 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f59d217489c07ae61a6165d3c4e54b94915f6b2b;p=php Fixed bug #38989 (Absolute path with slash at beginning doesn't work on win) --- diff --git a/TSRM/tsrm_virtual_cwd.c b/TSRM/tsrm_virtual_cwd.c index 422c993586..54ae9a75ff 100644 --- a/TSRM/tsrm_virtual_cwd.c +++ b/TSRM/tsrm_virtual_cwd.c @@ -386,14 +386,21 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func * This can happen under solaris when a dir does not have read permissions * but *does* have execute permissions */ if (!IS_ABSOLUTE_PATH(path, path_length) && (state->cwd_length > 1)) { - int orig_path_len = path_length + state->cwd_length + 1; + int orig_path_len; + int state_cwd_length = state->cwd_length; +#ifdef TSRM_WIN32 + if (IS_SLASH(path[0])) { + state_cwd_length = 2; + } +#endif + orig_path_len = path_length + state_cwd_length + 1; if (orig_path_len >= MAXPATHLEN) { return 1; } - memcpy(orig_path, state->cwd, state->cwd_length); - orig_path[state->cwd_length] = DEFAULT_SLASH; - memcpy(orig_path + state->cwd_length + 1, path, path_length + 1); + memcpy(orig_path, state->cwd, state_cwd_length); + orig_path[state_cwd_length] = DEFAULT_SLASH; + memcpy(orig_path + state_cwd_length + 1, path, path_length + 1); path = orig_path; path_length = orig_path_len; }