We need to remove the tree from the transaction. Fixes #3159.

* The tree does keep a reference to the inode as well as long as it is part
  of a transaction.
* Even if it wouldn't have done it (and would not have triggered the panic),
  Haiku would likely have crashed, as the inode (and therefore its tree) was
  already deleted at the time when the transaction discarded its listeners.
This commit is contained in:
Axel Dörfler
2012-04-01 13:04:36 +02:00
parent 15f4dcd831
commit 8f7ec006cb
@@ -176,6 +176,9 @@ InodeAllocator::~InodeAllocator()
fInode->Node().flags &= ~HOST_ENDIAN_TO_BFS_INT32(INODE_IN_USE);
// this unblocks any pending bfs_read_vnode() calls
fInode->Free(*fTransaction);
if (fInode->fTree != NULL)
fTransaction->RemoveListener(fInode->fTree);
fTransaction->RemoveListener(fInode);
remove_vnode(volume->FSVolume(), fInode->ID());