Fix a bug in BLayout::AddItem() where the right conditions + an error would have

caused the wrongful removal of a BView from its parent.
This commit is contained in:
Alex Wilson 2011-09-12 14:31:11 -06:00
parent b8725ee37e
commit 90e615679c

View File

@ -162,10 +162,14 @@ BLayout::AddItem(int32 index, BLayoutItem* item)
// if the item refers to a BView, we make sure it is added to the parent
// view
BView* view = item->View();
AutoDeleter<BView, ViewRemover> remover(view);
if (view && view->fParent != fTarget && !fTarget->_AddChild(view, NULL)) {
remover.Detach(); // view wasn't added
return false;
AutoDeleter<BView, ViewRemover> remover(NULL);
// In case of errors, we don't want to leave this view added where it
// shouldn't be.
if (view && view->fParent != fTarget) {
if (!fTarget->_AddChild(view, NULL))
return false;
else
remover.SetTo(view);
}
// validate the index