From 2d871992b8e8be2589568f85b9c67d6b21346af9 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sun, 8 Feb 2009 16:55:45 +0000 Subject: [PATCH] Only try to store attributes on destruction if the required root node is available. Should fix bug #3426 where an incompletely constructed volume object is deleted. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29166 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/file_systems/cdda/kernel_interface.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/file_systems/cdda/kernel_interface.cpp b/src/add-ons/kernel/file_systems/cdda/kernel_interface.cpp index b030b5c8c7..91e2da77f6 100644 --- a/src/add-ons/kernel/file_systems/cdda/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/cdda/kernel_interface.cpp @@ -508,10 +508,13 @@ Volume::Volume(fs_volume* fsVolume) Volume::~Volume() { - _StoreAttributes(); - _StoreSharedAttributes(); + if (fRootNode) { + _StoreAttributes(); + _StoreSharedAttributes(); + } - close(fDevice); + if (fDevice >= 0) + close(fDevice); // put_vnode on the root to release the ref to it if (fRootNode)