From f49d044cee38a7a2ea4b2aaca75453939aa0dcc2 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 19 Feb 2007 14:58:07 +0000 Subject: On win32 directories in the middle of the patch may be unreadable --- TSRM/tsrm_virtual_cwd.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'TSRM') diff --git a/TSRM/tsrm_virtual_cwd.c b/TSRM/tsrm_virtual_cwd.c index db74fcbbe9..78db6c0be9 100644 --- a/TSRM/tsrm_virtual_cwd.c +++ b/TSRM/tsrm_virtual_cwd.c @@ -548,11 +548,8 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func #endif } else { char *ptr, *path_copy, *free_path; - char *tok = NULL; + char *tok; int ptr_length; -#ifdef TSRM_WIN32 - int is_unc = 0; -#endif no_realpath: @@ -573,7 +570,6 @@ no_realpath: state->cwd[1] = '\0'; state->cwd_length = 1; path_copy += 2; - is_unc = 2; } else { #endif state->cwd = (char *) realloc(state->cwd, 1); @@ -583,6 +579,7 @@ no_realpath: } #endif + tok = NULL; ptr = tsrm_strtok_r(path_copy, TOKENIZER_STRING, &tok); while (ptr) { ptr_length = strlen(ptr); @@ -652,15 +649,9 @@ no_realpath: memcpy(&state->cwd[state->cwd_length], data.cFileName, length+1); ptr_length = length; FindClose(hFind); + ret = 0; } else if (use_realpath == CWD_REALPATH) { - if (is_unc) { - is_unc--; - } else { - free(free_path); - CWD_STATE_FREE(state); - *state = old_state; - return 1; - } + ret = 1; } } #endif @@ -672,6 +663,12 @@ no_realpath: free(free_path); + if ((use_realpath == CWD_REALPATH) && ret) { + CWD_STATE_FREE(state); + *state = old_state; + return 1; + } + if (state->cwd_length == COPY_WHEN_ABSOLUTE(state->cwd)) { state->cwd = (char *) realloc(state->cwd, state->cwd_length+1+1); state->cwd[state->cwd_length] = DEFAULT_SLASH; -- cgit v1.2.1