From 2321036228b5d24b480e1ad1c20aae65c28e521b Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Fri, 6 Jun 2014 17:14:17 -0600 Subject: Fix double free in merge-left rebalance. This commit fixes a bug where deletions that caused merge-left rebalances were updating the parent node which caused a node to "reappear" even after it had been deleted. This was fixed in merge-right rebalances a while ago but merge-left is less frequent so it was missed until now. Many thanks to Jordan Sherer (@jsherer) for finding and reporting the bug. --- node.go | 1 - 1 file changed, 1 deletion(-) (limited to 'node.go') diff --git a/node.go b/node.go index f0978ca..1865ffe 100644 --- a/node.go +++ b/node.go @@ -486,7 +486,6 @@ func (n *node) rebalance() { target.inodes = append(target.inodes, n.inodes...) n.parent.del(n.key) n.parent.removeChild(n) - n.parent.put(target.key, target.inodes[0].key, nil, target.pgid, 0) delete(n.bucket.nodes, n.pgid) n.free() } -- cgit v1.2.3