diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-05-16 11:53:13 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-05-16 11:53:13 -0700 |
commit | 1a5990162a3f678ba76e017d81c34ba67df97c53 (patch) | |
tree | 53588017313280c74f901f9c4df9e4080c319cf8 | |
parent | 4de54e3bece9a51a69bd46076acaa7746c1fa996 (diff) | |
parent | cd3320992885c2f5fdd4f10b058c6d633d26cb74 (diff) |
Merge pull request #1173 from manuels/incoming
Fix bug in rename() that occures if new filename starts with the old filename
-rw-r--r-- | src/library.js | 3 | ||||
-rwxr-xr-x | tests/runner.py | 29 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/library.js b/src/library.js index 84071b68..d19fd531 100644 --- a/src/library.js +++ b/src/library.js @@ -3482,7 +3482,8 @@ LibraryManager.library = { } else if (oldObj.isRoot || oldObj.path == FS.currentPath) { ___setErrNo(ERRNO_CODES.EBUSY); return -1; - } else if (newObj.path && newObj.path.indexOf(oldObj.path) == 0) { + } else if (newObj.parentPath && + newObj.parentPath.indexOf(oldObj.path) == 0) { ___setErrNo(ERRNO_CODES.EINVAL); return -1; } else if (newObj.exists && newObj.object.isFolder) { diff --git a/tests/runner.py b/tests/runner.py index 1ff917d0..87eab8c6 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -3404,6 +3404,35 @@ Exiting setjmp function, level: 0, prev_jmp: -1 ''' self.do_run(src, 'z:1*', force_c=True) + def test_rename(self): + src = ''' + #include <stdio.h> + #include <sys/stat.h> + #include <sys/types.h> + #include <assert.h> + + int main() { + int err; + FILE* fid; + + err = mkdir("/foo", 0777); + err = mkdir("/bar", 0777); + fid = fopen("/foo/bar", "w+"); + fclose(fid); + + err = rename("/foo/bar", "/foo/bar2"); + printf("%d\\n", err); + + err = rename("/foo", "/foo/foo"); + printf("%d\\n", err); + + err = rename("/foo", "/bar/foo"); + printf("%d\\n", err); + return 0; + } + ''' + self.do_run(src, '0\n-1\n0\n', force_c=True) + def test_alloca_stack(self): if self.emcc_args is None: return # too slow in other modes |