From bd6e1f64ce8afa380286700945d71df29654f59c Mon Sep 17 00:00:00 2001 From: Christian Wieninger Date: Fri, 14 Nov 2008 19:10:53 +0100 Subject: fixed a segfault occurring when navigating to a userdefined epg menu that has expired in the meantime, thanks to Mike Constabel for reporting --- HISTORY | 2 ++ HISTORY.DE | 2 ++ menu_whatson.c | 22 +++++++++++----------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/HISTORY b/HISTORY index 9f31582..4d2bee7 100644 --- a/HISTORY +++ b/HISTORY @@ -30,6 +30,8 @@ fixes: - fixed line breaks in SVDRP command LSTT, thanks to Andreas Mair for providing a patch - improved response time when canceling the search timer thread +- fixed a segfault occurring when navigating to a userdefined epg menu that has expired + in the meantime, thanks to Mike Constabel for reporting 2008-04-29: Version 0.9.24 diff --git a/HISTORY.DE b/HISTORY.DE index 579b1ed..e67373b 100644 --- a/HISTORY.DE +++ b/HISTORY.DE @@ -31,6 +31,8 @@ fixes: Beenden zu vermeiden, danke e9hack@vdrportal für den Patch - Zeilenumbrüche im SVDRP-Befehl LSTT korrigiert, Danke an Andreas Mair für einen Patch - Antwortzeit beim Abbruch des Suchtimer-Threads verbessert +- Absturz beim Navigieren zu benutzerdef. EPG-Menüs behoben, die zwischenzeitlich schon + in der Vergangenheit lagen, Danke an Mike Constabel für den Hinweis 2008-04-29: Version 0.9.24 diff --git a/menu_whatson.c b/menu_whatson.c index 5993789..0af9cf7 100644 --- a/menu_whatson.c +++ b/menu_whatson.c @@ -334,6 +334,7 @@ void cMenuWhatsOnSearch::LoadSchedules() // time_t SeekTime; cString szTitle; cShowMode* mode = GetShowMode(currentShowMode); + if (!mode) return; if (shiftTime != 0) { @@ -359,17 +360,14 @@ void cMenuWhatsOnSearch::LoadSchedules() } else { - if (mode) - { - seekTime = GetTimeT(mode->GetTime()); - if (seekTime < time(NULL) && currentShowMode != showNow && currentShowMode != showNext) - { - seekTime += HOURS2SECS(24); - szTitle = cString::sprintf("%s - %s (%s)", tr("Overview"), mode->GetDescription(), *WeekDayName(seekTime)); - } - else - szTitle = cString::sprintf("%s - %s", tr("Overview"), mode->GetDescription()); - } + seekTime = GetTimeT(mode->GetTime()); + if (seekTime < time(NULL) && currentShowMode != showNow && currentShowMode != showNext) + { + seekTime += HOURS2SECS(24); + szTitle = cString::sprintf("%s - %s (%s)", tr("Overview"), mode->GetDescription(), *WeekDayName(seekTime)); + } + else + szTitle = cString::sprintf("%s - %s", tr("Overview"), mode->GetDescription()); } SetTitle(szTitle); @@ -460,6 +458,8 @@ showMode cMenuWhatsOnSearch::GetNextMode() else nextShowMode = ModeNext->GetMode(); } + else // no mode found? fall back to 'now' + nextShowMode = showNow; return nextShowMode; } -- cgit v1.2.3