From d3e72a992dde2edab4ab0a357968cf5d64acac2f Mon Sep 17 00:00:00 2001 From: Alex Wilson Date: Fri, 7 Jan 2011 05:47:39 +0000 Subject: [PATCH] In fixing CID #5841, I found that not only does the code in BAbstractLayout::AllUnarchived() leak, it is also mostly unnecessary! (mea culpa) This fixes both problems. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40140 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/interface/AbstractLayout.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/kits/interface/AbstractLayout.cpp b/src/kits/interface/AbstractLayout.cpp index bbc00a0a75..c5be8f908e 100644 --- a/src/kits/interface/AbstractLayout.cpp +++ b/src/kits/interface/AbstractLayout.cpp @@ -422,18 +422,10 @@ BAbstractLayout::Archive(BMessage* into, bool deep) const status_t BAbstractLayout::AllUnarchived(const BMessage* from) { - if (Owner()) { - ViewProxy* proxy = dynamic_cast(fExplicitData); - if (!proxy) { - delete fExplicitData; - proxy = new ViewProxy(Owner()); - } - proxy->view = Owner(); - } else { - fExplicitData = new DataProxy(); - return fExplicitData->RestoreDataFromArchive(from); - } - + status_t err = fExplicitData->RestoreDataFromArchive(from); + if (err != B_OK) + return err; + return BLayout::AllUnarchived(from); }