diff options
author | althekiller <althekiller@svn> | 2010-05-15 04:10:21 +0000 |
---|---|---|
committer | althekiller <althekiller@svn> | 2010-05-15 04:10:21 +0000 |
commit | 90d87143676e1a49dd7b5d1e976dd22f6618f2c8 (patch) | |
tree | 0de56d3225d60777971dc8dc9ca8672925f82e72 | |
parent | 1f6561cf56a9007e76cced99dda59c9a225edeed (diff) |
fixed: Potential NULL pointer dereferences in projectM addon
git-svn-id: https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk@30168 568bbfeb-2a22-0410-94d2-cc84cf5bfa90
-rw-r--r-- | xbmc/visualizations/XBMCProjectM/Main.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/xbmc/visualizations/XBMCProjectM/Main.cpp b/xbmc/visualizations/XBMCProjectM/Main.cpp index 22d669703c..e8d6c7a26b 100644 --- a/xbmc/visualizations/XBMCProjectM/Main.cpp +++ b/xbmc/visualizations/XBMCProjectM/Main.cpp @@ -197,7 +197,8 @@ extern "C" void Start(int iChannels, int iSamplesPerSec, int iBitsPerSample, con //----------------------------------------------------------------------------- extern "C" void AudioData(const short* pAudioData, int iAudioDataLength, float *pFreqData, int iFreqDataLength) { - globalPM->pcm()->addPCM16Data(pAudioData, iAudioDataLength); + if (globalPM) + globalPM->pcm()->addPCM16Data(pAudioData, iAudioDataLength); } //-- Render ------------------------------------------------------------------- @@ -205,7 +206,8 @@ extern "C" void AudioData(const short* pAudioData, int iAudioDataLength, float * //----------------------------------------------------------------------------- extern "C" void Render() { - globalPM->renderFrame(); + if (globalPM) + globalPM->renderFrame(); } //-- GetInfo ------------------------------------------------------------------ @@ -224,6 +226,9 @@ extern "C" bool OnAction(long flags, const void *param) { bool ret = false; + if (!globalPM) + return false; + if (flags == VIS_ACTION_LOAD_PRESET && param) { int pindex = *((int *)param); @@ -267,7 +272,7 @@ extern "C" bool OnAction(long flags, const void *param) //----------------------------------------------------------------------------- extern "C" unsigned int GetPresets(char ***presets) { - g_numPresets = globalPM->getPlaylistSize(); + g_numPresets = globalPM ? globalPM->getPlaylistSize() : 0; if (g_numPresets > 0) { g_presets = (char**) malloc(sizeof(char*)*g_numPresets); @@ -290,7 +295,7 @@ extern "C" unsigned GetPreset() if (g_presets) { unsigned preset; - if(globalPM->selectedPresetIndex(preset)) + if(globalPM && globalPM->selectedPresetIndex(preset)) return preset; } return 0; |