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