浏览代码

* BugFix: Correct an ASAN reported memory access error when calling updateHeight on GuiGameListMenuCtrl when an invalid profile is initially set.

Robert MacGregor 3 年之前
父节点
当前提交
724e4f423c
共有 1 个文件被更改,包括 8 次插入4 次删除
  1. 8 4
      Engine/source/gui/controls/guiGameListMenuCtrl.cpp

+ 8 - 4
Engine/source/gui/controls/guiGameListMenuCtrl.cpp

@@ -543,7 +543,8 @@ Point2I  GuiGameListMenuCtrl::getMinExtent() const
 {
    Point2I parentMin = Parent::getMinExtent();
 
-   GuiGameListMenuProfile * profile = (GuiGameListMenuProfile *) mProfile;
+   GuiGameListMenuProfile * profile = dynamic_cast<GuiGameListMenuProfile*>(mProfile);
+   AssertFatal(profile, "Invalid profile for GuiGameListMenuCtrl!");
 
    S32 minHeight = 0;
    S32 rowHeight = profile->getRowHeight();
@@ -632,10 +633,13 @@ void GuiGameListMenuCtrl::enforceConstraints()
 
 void GuiGameListMenuCtrl::updateHeight()
 {
-   S32 minHeight = getMinExtent().y;
-   if (getHeight() < minHeight)
+   if (hasValidProfile())
    {
-      setHeight(minHeight);
+       S32 minHeight = getMinExtent().y;
+       if (getHeight() < minHeight)
+       {
+           setHeight(minHeight);
+       }
    }
 }