aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/mount/inode_to_path.go4
-rw-r--r--weed/mount/inode_to_path_test.go14
2 files changed, 16 insertions, 2 deletions
diff --git a/weed/mount/inode_to_path.go b/weed/mount/inode_to_path.go
index 6118d51cf..dd125f250 100644
--- a/weed/mount/inode_to_path.go
+++ b/weed/mount/inode_to_path.go
@@ -34,8 +34,8 @@ func (ie *InodeEntry) removeOnePath(p util.FullPath) bool {
if idx < 0 {
return false
}
- for x := len(ie.paths) - 2; x > idx; x-- {
- ie.paths[x-1] = ie.paths[x]
+ for x := idx; x < len(ie.paths)-1; x++ {
+ ie.paths[x] = ie.paths[x+1]
}
ie.paths = ie.paths[0 : len(ie.paths)-1]
return true
diff --git a/weed/mount/inode_to_path_test.go b/weed/mount/inode_to_path_test.go
index b9723c4c5..0e7af21ee 100644
--- a/weed/mount/inode_to_path_test.go
+++ b/weed/mount/inode_to_path_test.go
@@ -14,6 +14,15 @@ func TestInodeEntry_removeOnePath(t *testing.T) {
count int
}{
{
+ name: "actual case",
+ entry: InodeEntry{
+ paths: []util.FullPath{"/pjd/nx", "/pjd/n0"},
+ },
+ p: "/pjd/nx",
+ want: true,
+ count: 1,
+ },
+ {
name: "empty",
entry: InodeEntry{},
p: "x",
@@ -74,6 +83,11 @@ func TestInodeEntry_removeOnePath(t *testing.T) {
if tt.count != len(tt.entry.paths) {
t.Errorf("removeOnePath path count = %v, want %v", len(tt.entry.paths), tt.count)
}
+ for i, p := range tt.entry.paths {
+ if p == tt.p {
+ t.Errorf("removeOnePath found path still exists at %v, %v", i, p)
+ }
+ }
})
}
}