From 4ca2a447795eca7223ce9a8a033093118740e475 Mon Sep 17 00:00:00 2001 From: Alex Wilson Date: Wed, 1 Feb 2012 09:55:38 +1300 Subject: [PATCH] Make ownership-taking idempotent during unarchiving. The previous scheme made it hard to deal with reference-counted objects, which may be owned by many objects. --- src/kits/support/ArchivingManagers.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/kits/support/ArchivingManagers.cpp b/src/kits/support/ArchivingManagers.cpp index 0d7b5851c8..3405b53b20 100644 --- a/src/kits/support/ArchivingManagers.cpp +++ b/src/kits/support/ArchivingManagers.cpp @@ -299,10 +299,8 @@ BUnarchiveManager::GetArchivableForToken(int32 token, } } - if (!info.adopted && owning == BUnarchiver::B_ASSUME_OWNERSHIP) + if (owning == BUnarchiver::B_ASSUME_OWNERSHIP) info.adopted = true; - else if (info.adopted && owning == BUnarchiver::B_ASSUME_OWNERSHIP) - debugger("Cannot assume ownership of an object that is already owned"); _archivable = info.archivable; return err; @@ -399,11 +397,7 @@ BUnarchiveManager::AssumeOwnership(BArchivable* archivable) || fObjects[token].archivable != archivable) return; - if (!fObjects[token].adopted) - fObjects[token].adopted = true; - else { - debugger("Cannot assume ownership of an object that is already owned"); - } + fObjects[token].adopted = true; }