Skip to content

Commit

Permalink
MythZoneMinder: fix Coverity ID 1026721 Unchecked dynamic_cast
Browse files Browse the repository at this point in the history
In ZMPlayer::keyPressEvent(): Dynamic_cast may fail and return null if the
type cast is incompatible.

This is a false positive because Create() has already checked those widgets
exist and would fail if they didn't long before we get to this code.
  • Loading branch information
Paul Harrison committed Jun 6, 2013
1 parent f0f15b3 commit ffd24a9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 13 deletions.
27 changes: 14 additions & 13 deletions mythplugins/mythzoneminder/mythzoneminder/zmplayer.cpp
Expand Up @@ -37,7 +37,8 @@ using namespace std;
ZMPlayer::ZMPlayer(MythScreenStack *parent, const char *name,
vector<Event *> *eventList, int *currentEvent)
:MythScreenType(parent, name),
m_frameImage(NULL), m_noEventsText(NULL), m_eventText(NULL),
m_activeFrameImage(NULL), m_frameImageFS(NULL), m_frameImage(NULL),
m_noEventsText(NULL), m_eventText(NULL),
m_cameraText(NULL), m_frameText(NULL), m_dateText(NULL),
m_playButton(NULL), m_deleteButton(NULL), m_nextButton(NULL),
m_prevButton(NULL), m_currentEvent(currentEvent),
Expand Down Expand Up @@ -76,11 +77,7 @@ bool ZMPlayer::Create(void)

bool err = false;

// hide the fullscreen image
UIUtilE::Assign(this, m_frameImage, "framefsimage", &err);
if (m_frameImage)
m_frameImage->SetVisible(false);

UIUtilE::Assign(this, m_frameImageFS, "framefsimage", &err);
UIUtilE::Assign(this, m_frameImage, "frameimage", &err);
UIUtilE::Assign(this, m_noEventsText, "noevents_text", &err);
UIUtilE::Assign(this, m_eventText, "event_text", &err);
Expand Down Expand Up @@ -123,6 +120,10 @@ bool ZMPlayer::Create(void)
connect(m_nextButton, SIGNAL(Clicked()), this, SLOT(nextPressed()));
}

// hide the fullscreen image
m_frameImageFS->SetVisible(false);
m_activeFrameImage = m_frameImage;

BuildFocusList();

SetFocusWidget(m_playButton);
Expand All @@ -144,8 +145,8 @@ void ZMPlayer::getEventInfo()
if (m_noEventsText)
m_noEventsText->SetVisible(true);

m_frameImage->SetFilename(QString("mz_black.png"));
m_frameImage->Load();
m_activeFrameImage->SetFilename(QString("mz_black.png"));
m_activeFrameImage->Load();

m_eventText->Reset();
m_cameraText->Reset();
Expand Down Expand Up @@ -250,15 +251,15 @@ bool ZMPlayer::keyPressEvent(QKeyEvent *event)
{
m_fullScreen = false;
m_frameImage->SetVisible(false);
m_frameImage = dynamic_cast<MythUIImage *> (GetChild("frameimage"));
m_frameImage->SetVisible(true);
m_frameImageFS->SetVisible(true);
m_activeFrameImage = m_frameImageFS;
}
else
{
m_fullScreen = true;
m_frameImage->SetVisible(false);
m_frameImage = dynamic_cast<MythUIImage *> (GetChild("framefsimage"));
m_frameImageFS->SetVisible(false);
m_frameImage->SetVisible(true);
m_activeFrameImage = m_frameImage;
}

if (!m_paused)
Expand Down Expand Up @@ -392,7 +393,7 @@ void ZMPlayer::getFrame(void)

if (m_image)
{
m_frameImage->SetImage(m_image);
m_activeFrameImage->SetImage(m_image);
m_frameText->SetText(QString("%1/%2").arg(m_curFrame).arg(m_lastFrame));
}

Expand Down
2 changes: 2 additions & 0 deletions mythplugins/mythzoneminder/mythzoneminder/zmplayer.h
Expand Up @@ -54,6 +54,8 @@ class ZMPlayer : public MythScreenType

void stopPlayer(void);

MythUIImage *m_activeFrameImage;
MythUIImage *m_frameImageFS;
MythUIImage *m_frameImage;

MythUIText *m_noEventsText;
Expand Down

0 comments on commit ffd24a9

Please sign in to comment.