diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-10-11 09:52:56 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-10-11 09:52:56 -0700 |
commit | b5d2acf04f04307c9d82f533ed6e0fdb1ec516c7 (patch) | |
tree | d94288ea888e1846953f8417f32372a472cc2f16 | |
parent | 2cc20b41629bc533902ab25771388665c9276e58 (diff) | |
parent | c338dd0a37f127aff4aaf69a6ba884a717bb0357 (diff) |
Merge pull request #1704 from michaeljbishop/rename-bug
Fixes bug when renaming a directory into a subdirectory.
-rw-r--r-- | src/library_memfs.js | 1 | ||||
-rw-r--r-- | tests/stdio/test_rename.c | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/library_memfs.js b/src/library_memfs.js index 4e56d996..94fd767e 100644 --- a/src/library_memfs.js +++ b/src/library_memfs.js @@ -140,6 +140,7 @@ mergeInto(LibraryManager.library, { delete old_node.parent.contents[old_node.name]; old_node.name = new_name; new_dir.contents[new_name] = old_node; + old_node.parent = new_dir; }, unlink: function(parent, name) { delete parent.contents[name]; diff --git a/tests/stdio/test_rename.c b/tests/stdio/test_rename.c index f15c8140..1a5017c1 100644 --- a/tests/stdio/test_rename.c +++ b/tests/stdio/test_rename.c @@ -25,6 +25,8 @@ void setup() { mkdir("dir/subdir", 0777); mkdir("dir-readonly", 0555); mkdir("dir-nonempty", 0777); + mkdir("dir/subdir3", 0777); + mkdir("dir/subdir3/subdir3_1", 0777); create_file("dir-nonempty/file", "abcdef", 0777); } @@ -38,6 +40,9 @@ void cleanup() { rmdir("dir/subdir"); rmdir("dir/subdir1"); rmdir("dir/subdir2"); + rmdir("dir/subdir3/subdir3_1/subdir1 renamed"); + rmdir("dir/subdir3/subdir3_1"); + rmdir("dir/subdir3"); rmdir("dir"); rmdir("dir-readonly"); unlink("dir-nonempty/file"); @@ -96,6 +101,11 @@ void test() { err = access("dir/subdir2", F_OK); assert(!err); + err = rename("dir/subdir2", "dir/subdir3/subdir3_1/subdir1 renamed"); + assert(!err); + err = access("dir/subdir3/subdir3_1/subdir1 renamed", F_OK); + assert(!err); + puts("success"); } |