dynamic_cast should be checked

From: Erik Hovland <erik@hovland.org>


---

 mythtv/libs/libmythui/mythuibutton.cpp     |   16 ++++++++++++----
 mythtv/libs/libmythui/mythuibuttonlist.cpp |   12 ++++++++----
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/mythtv/libs/libmythui/mythuibutton.cpp b/mythtv/libs/libmythui/mythuibutton.cpp
index 56f304d..725b291 100644
--- a/mythtv/libs/libmythui/mythuibutton.cpp
+++ b/mythtv/libs/libmythui/mythuibutton.cpp
@@ -1,8 +1,8 @@
-#include <iostream>
-using namespace std;
-
 #include "mythuibutton.h"
 #include "mythmainwindow.h"
+#include "mythverbose.h"
+#include <iostream>
+using namespace std;
 
 MythUIButton::MythUIButton(MythUIType *parent, const QString &name, bool doInit)
             : MythUIType(parent, name)
@@ -386,7 +386,8 @@ void MythUIButton::CopyFrom(MythUIType *base)
     MythUIButton *button = dynamic_cast<MythUIButton *>(base);
     if (!button)
     {
-        cerr << "ERROR, bad parsing" << endl;
+        VERBOSE(VB_IMPORTANT,
+                "MythUIButton::CopyFrom: Dynamic cast of base failed");
         return;
     }
 
@@ -410,6 +411,13 @@ void MythUIButton::CopyFrom(MythUIType *base)
                     (GetChild("buttonimage"));
     m_ArrowImage = dynamic_cast<MythUIImage *>
                     (GetChild("arrowimage"));
+    if (m_BackgroundImage || !m_CheckImage || !m_Text || !m_ButtonImage ||
+        !m_ArrowImage)
+    {
+        VERBOSE(VB_IMPORTANT,
+                "MythUIButton::CopyFrom: Dynamic cast of a child failed");
+        return;
+    }
 
     m_CheckImage->SetVisible(false);
     m_ButtonImage->SetVisible(false);
diff --git a/mythtv/libs/libmythui/mythuibuttonlist.cpp b/mythtv/libs/libmythui/mythuibuttonlist.cpp
index c9dfcfe..078b09d 100644
--- a/mythtv/libs/libmythui/mythuibuttonlist.cpp
+++ b/mythtv/libs/libmythui/mythuibuttonlist.cpp
@@ -620,9 +620,12 @@ void MythUIButtonList::Init()
     MythUIStateType *buttontemplate = dynamic_cast<MythUIStateType *>
                                                 (GetChild("buttonitem"));
 
-    buttontemplate->SetVisible(false);
-
-    QRect buttonItemArea = buttontemplate->GetArea();
+    QRect buttonItemArea;
+    if (buttontemplate)
+    {
+        buttontemplate->SetVisible(false);
+        buttonItemArea = buttontemplate->GetArea();
+    }
 
     if (buttonItemArea.height() > 0)
         m_itemHeight = buttonItemArea.height();
@@ -648,7 +651,8 @@ void MythUIButtonList::Init()
     {
         QString name = QString("buttonlist button %1").arg(i);
         MythUIStateType *button = new MythUIStateType(this, name);
-        button->CopyFrom(buttontemplate);
+        if (buttontemplate)
+            button->CopyFrom(buttontemplate);
 
         if (col > m_columns)
         {
