diff --git a/src/path_resolver.c b/src/path_resolver.c index bec2f1d..af13c15 100644 --- a/src/path_resolver.c +++ b/src/path_resolver.c @@ -351,6 +351,7 @@ static uvwasi_errno_t uvwasi__resolve_path_to_host( #ifdef _WIN32 /* Replace / with \ on Windows. */ + res_path = *resolved_path; for (i = real_path_len; i < *resolved_len; i++) { if (res_path[i] == '/') res_path[i] = '\\'; diff --git a/test/test-path-resolution.c b/test/test-path-resolution.c index 65debbc..a3fee12 100644 --- a/test/test-path-resolution.c +++ b/test/test-path-resolution.c @@ -50,9 +50,24 @@ static uvwasi_errno_t check(char* fd_mp, char* fd_rp, char* path, char** res) { static void pass(char* mp, char* rp, char* path, char* expected) { char* resolved; + size_t res_len; + size_t i; assert(UVWASI_ESUCCESS == check(mp, rp, path, &resolved)); - assert(0 == strcmp(resolved, expected)); + res_len = strlen(resolved); + assert(res_len == strlen(expected)); + + for (i = 0; i < res_len + 1; i++) { +#ifdef _WIN32 + if (resolved[i] == '\\') { + assert(expected[i] == '/'); + continue; + } +#endif /* _WIN32 */ + + assert(resolved[i] == expected[i]); + } + free(resolved); }