From 476a7d0f43f0538b8fda80dc2f7362e2dc4362fc Mon Sep 17 00:00:00 2001 From: ace20022 <ace20022@ymail.com> Date: Thu, 21 Aug 2014 21:55:04 +0200 Subject: [Fix] Only handle BD_EVENT_ANGLE events if we have a valid/sane playlist id. --- xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.cpp | 10 +++++++--- xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.h | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.cpp index 6a7d4dc313..3326f29bd0 100644 --- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.cpp +++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.cpp @@ -485,9 +485,13 @@ void CDVDInputStreamBluray::ProcessEvent() { CLog::Log(LOGDEBUG, "CDVDInputStreamBluray - BD_EVENT_ANGLE %d", m_event.param); m_angle = m_event.param; - if (m_title) - m_dll->bd_free_title_info(m_title); - m_title = m_dll->bd_get_playlist_info(m_bd, m_playlist, m_angle); + + if (m_playlist <= MAX_PLAYLIST_ID) + { + if(m_title) + m_dll->bd_free_title_info(m_title); + m_title = m_dll->bd_get_playlist_info(m_bd, m_playlist, m_angle); + } break; case BD_EVENT_END_OF_TITLE: diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.h index 262c7b8800..01fff00f6d 100644 --- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.h +++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamBluray.h @@ -32,6 +32,8 @@ extern "C" #include <libbluray/overlay.h> } +#define MAX_PLAYLIST_ID 99999 + class CDVDOverlayImage; class DllLibbluray; class IDVDPlayer; -- cgit v1.2.3