Author: yourpalal Date: 2011-04-15 20:35:26 +0200 (Fri, 15 Apr 2011) New Revision: 41256 Changeset: https://dev.haiku-os.org/changeset/41256 Ticket: https://dev.haiku-os.org/ticket/7446 Modified: haiku/trunk/src/kits/interface/layouter/CollapsingLayouter.cpp Log: Update CollapsingLayouter to fix crashes in a few applications. All these crashes were related to empty layouts. Fixes some of #7446 Modified: haiku/trunk/src/kits/interface/layouter/CollapsingLayouter.cpp =================================================================== --- haiku/trunk/src/kits/interface/layouter/CollapsingLayouter.cpp 2011-04-15 00:01:56 UTC (rev 41255) +++ haiku/trunk/src/kits/interface/layouter/CollapsingLayouter.cpp 2011-04-15 18:35:26 UTC (rev 41256) @@ -195,7 +195,7 @@ CollapsingLayouter::MinSize() { _ValidateLayouter(); - return fLayouter->MinSize(); + return fLayouter ? fLayouter->MinSize() : 0; } @@ -203,7 +203,7 @@ CollapsingLayouter::MaxSize() { _ValidateLayouter(); - return fLayouter->MaxSize(); + return fLayouter ? fLayouter->MaxSize() : B_SIZE_UNLIMITED; } @@ -211,7 +211,7 @@ CollapsingLayouter::PreferredSize() { _ValidateLayouter(); - return fLayouter->PreferredSize(); + return fLayouter ? fLayouter->PreferredSize() : 0; } @@ -220,7 +220,8 @@ { _ValidateLayouter(); - return new ProxyLayoutInfo(fLayouter->CreateLayoutInfo(), fElementCount); + LayoutInfo* info = fLayouter ? fLayouter->CreateLayoutInfo() : NULL; + return new ProxyLayoutInfo(info, fElementCount); } @@ -328,6 +329,9 @@ void CollapsingLayouter::_SetWeights() { + if (!fLayouter) + return; + for (int32 i = 0; i < fElementCount; i++) { fLayouter->SetWeight(fElements[i].position, fElements[i].weight); }