This commit is contained in:
Chris Lu
2020-03-26 03:30:02 -07:00
parent 712720864d
commit c763a492f5

View File

@@ -64,7 +64,7 @@ func (c *FsCache) DeleteFsNode(path util.FullPath) {
} }
} }
if t.parent != nil { if t.parent != nil {
t.parent.deleteChild(t.name) t.parent.disconnectChild(t)
} }
t.deleteSelf() t.deleteSelf()
} }
@@ -81,9 +81,8 @@ func (c *FsCache) Move(oldPath util.FullPath, newPath util.FullPath) *FsNode {
} }
} }
if src.parent != nil { if src.parent != nil {
src.parent.deleteChild(src.name) src.parent.disconnectChild(src)
} }
src.parent = nil
// find new node // find new node
target := c.root target := c.root
@@ -95,7 +94,7 @@ func (c *FsCache) Move(oldPath util.FullPath, newPath util.FullPath) *FsNode {
if dir, ok := src.node.(*Dir); ok { if dir, ok := src.node.(*Dir); ok {
dir.name = target.name // target is not Dir, but a shortcut dir.name = target.name // target is not Dir, but a shortcut
} }
parent.deleteChild(target.name) parent.disconnectChild(target)
target.deleteSelf() target.deleteSelf()
@@ -150,10 +149,11 @@ func (n *FsNode) ensureChild(name string) *FsNode {
return t return t
} }
func (n *FsNode) deleteChild(name string) { func (n *FsNode) disconnectChild(child *FsNode) {
n.childrenLock.Lock() n.childrenLock.Lock()
delete(n.children, name) delete(n.children, child.name)
n.childrenLock.Unlock() n.childrenLock.Unlock()
child.parent = nil
} }
func (n *FsNode) deleteSelf() { func (n *FsNode) deleteSelf() {