On win32 directories in the middle of the patch may be unreadable

This commit is contained in:
Dmitry Stogov 2007-02-19 14:59:03 +00:00
parent bc873b7b1d
commit 1c00069571

View File

@ -547,11 +547,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:
@ -572,7 +569,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);
@ -582,6 +578,7 @@ no_realpath:
}
#endif
tok = NULL;
ptr = tsrm_strtok_r(path_copy, TOKENIZER_STRING, &tok);
while (ptr) {
ptr_length = strlen(ptr);
@ -651,15 +648,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
@ -671,6 +662,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;