test: fix test-cwd-and-chdir

The test used to call uv_cwd() twice, in this fashion:

  char buf[PATH_MAX];
  size_t size = sizeof buf;

  uv_cwd(buf, &size);
  uv_cwd(buf, &size);

The `size` variable is supposed to contain the buffer size (including
terminating null) on input, and it is also used as an out parameter for
returning the actual length of the working directory (not including the
terminating null). This makes the second uv_cwd() call fail with
UV_ENOBUFS.

PR-URL: https://github.com/libuv/libuv/pull/54
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
This commit is contained in:
Bert Belder 2014-12-11 17:12:04 +01:00
parent cb2f6a9743
commit e8c4c329e6

View File

@ -29,12 +29,13 @@ extern char executable_path[];
TEST_IMPL(cwd_and_chdir) {
char buffer_orig[PATHMAX];
char buffer_new[PATHMAX];
size_t size;
size_t size1;
size_t size2;
char* last_slash;
int err;
size = sizeof(buffer_orig);
err = uv_cwd(buffer_orig, &size);
size1 = sizeof buffer_orig;
err = uv_cwd(buffer_orig, &size1);
ASSERT(err == 0);
/* Remove trailing slash unless at a root directory. */
@ -55,9 +56,11 @@ TEST_IMPL(cwd_and_chdir) {
err = uv_chdir(buffer_orig);
ASSERT(err == 0);
err = uv_cwd(buffer_new, &size);
size2 = sizeof buffer_new;
err = uv_cwd(buffer_new, &size2);
ASSERT(err == 0);
ASSERT(size1 == size2);
ASSERT(strcmp(buffer_orig, buffer_new) == 0);
return 0;