dynamic_cast should be checked

From: Erik Hovland <erik@hovland.org>


---

 mythtv/libs/libmythui/mythuibutton.cpp     |   16 ++++++++++++----
 mythtv/libs/libmythui/mythuibuttonlist.cpp |    3 ++-
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/mythtv/libs/libmythui/mythuibutton.cpp b/mythtv/libs/libmythui/mythuibutton.cpp
index dd274f9..34892e4 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)
@@ -390,7 +390,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;
     }
 
@@ -414,6 +415,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 b2f5dfb..db15442 100644
--- a/mythtv/libs/libmythui/mythuibuttonlist.cpp
+++ b/mythtv/libs/libmythui/mythuibuttonlist.cpp
@@ -690,7 +690,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)
         {
