From 5e5a8daf68738e1e7e2c76c1360e5c4dabceef6e Mon Sep 17 00:00:00 2001 From: Alex Wilson Date: Fri, 15 Apr 2011 18:35:26 +0000 Subject: [PATCH] Update CollapsingLayouter to fix crashes in a few applications. All these crashes were related to empty layouts. Fixes some of #7446 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41256 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/interface/layouter/CollapsingLayouter.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/kits/interface/layouter/CollapsingLayouter.cpp b/src/kits/interface/layouter/CollapsingLayouter.cpp index 50c8393b9e..d2620bf7b5 100644 --- a/src/kits/interface/layouter/CollapsingLayouter.cpp +++ b/src/kits/interface/layouter/CollapsingLayouter.cpp @@ -195,7 +195,7 @@ float CollapsingLayouter::MinSize() { _ValidateLayouter(); - return fLayouter->MinSize(); + return fLayouter ? fLayouter->MinSize() : 0; } @@ -203,7 +203,7 @@ float CollapsingLayouter::MaxSize() { _ValidateLayouter(); - return fLayouter->MaxSize(); + return fLayouter ? fLayouter->MaxSize() : B_SIZE_UNLIMITED; } @@ -211,7 +211,7 @@ float CollapsingLayouter::PreferredSize() { _ValidateLayouter(); - return fLayouter->PreferredSize(); + return fLayouter ? fLayouter->PreferredSize() : 0; } @@ -220,7 +220,8 @@ CollapsingLayouter::CreateLayoutInfo() { _ValidateLayouter(); - return new ProxyLayoutInfo(fLayouter->CreateLayoutInfo(), fElementCount); + LayoutInfo* info = fLayouter ? fLayouter->CreateLayoutInfo() : NULL; + return new ProxyLayoutInfo(info, fElementCount); } @@ -328,6 +329,9 @@ CollapsingLayouter::_AddConstraints(int32 position, const Constraint* c) void CollapsingLayouter::_SetWeights() { + if (!fLayouter) + return; + for (int32 i = 0; i < fElementCount; i++) { fLayouter->SetWeight(fElements[i].position, fElements[i].weight); }