You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/media-plugins/vdr-tvonscreen/files/vdr-tvonscreen-1.0.141-fixe...

152 lines
4.1 KiB

#! /bin/sh /usr/share/dpatch/dpatch-run
## 02_tvonscreen-1.0-fixes.dpatch by apex at vdrportal.de
## http://vdrportal.de/board/thread.php?postid=517272#post517272
##
## Contains following patches:
## - http://toms-cafe.de/vdr/download/tvonscreen-0.7.0-fix-noepg.diff
## (fixes segmentation fault without any epg data)
## - http://vdrportal.de/board/thread.php?postid=401733#post401733
## (fixes segmentation fault with empty columns)
## - http://www.vdr-portal.de/board/thread.php?postid=681720#post681720
## (fixes segfault when switching to edit mode)
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Fixes segmentation faults.
@DPATCH@
diff -urNad vdr-plugin-tvonscreen-1.0.141~/magazine.c vdr-plugin-tvonscreen-1.0.141/magazine.c
--- vdr-plugin-tvonscreen-1.0.141~/magazine.c 2006-06-18 15:59:36.000000000 +0200
+++ vdr-plugin-tvonscreen-1.0.141/magazine.c 2008-04-13 18:11:49.000000000 +0200
@@ -458,6 +458,9 @@
}
const cEvent *magazine::getNext(const cSchedule *s,const cEvent *e)
{
+ if (e == NULL)
+ return NULL;
+
const cEvent *pe = NULL;
time_t ref = e->StartTime();
@@ -480,6 +483,9 @@
}
const cEvent *magazine::getPrev(const cSchedule *s,const cEvent *e)
{
+ if (e == NULL)
+ return NULL;
+
const cEvent *pe = NULL;
time_t ref = e->StartTime();
time_t delta = INT_MAX;
@@ -1077,9 +1083,9 @@
{
state = cOsdObject::ProcessKey(Key);
- if (state == osUnknown)
+ if (state == osUnknown && schedArrayNum>currentFirst)
{
- if (curmode==SHOW && schedArrayNum>currentFirst)
+ if (curmode==SHOW)
{
switch (Key & ~k_Repeat)
{
@@ -1111,6 +1117,8 @@
currentFirst++;
if (currentFirst>schedArrayNum-3)
currentFirst=schedArrayNum-3;
+ if (currentFirst<0)
+ currentFirst=0;
output();
break;
case kUp:
@@ -1145,6 +1153,8 @@
currentFirst+=3;
if (currentFirst>schedArrayNum-3)
currentFirst=schedArrayNum-3;
+ if (currentFirst<0)
+ currentFirst=0;
output();
break;
case k8: // zum aktuellen Sender
@@ -1206,14 +1216,17 @@
{
case kOk:
{
- delete osd;
- osd=NULL;
cEvent **ev=ev4ch(EDIT_curChannel);
- me=new tvOcMenuEvent(ev[EDIT_curEVI]);
- me->Display();
- curmode=SHOW;
- EDIT_curEvent=0;
- return osContinue;
+ if (ev[EDIT_curEVI] != NULL)
+ {
+ delete osd;
+ osd=NULL;
+ me=new tvOcMenuEvent(ev[EDIT_curEVI]);
+ me->Display();
+ curmode=SHOW;
+ EDIT_curEvent=0;
+ return osContinue;
+ }
}
break;
case kBack:
@@ -1238,11 +1251,15 @@
EDIT_curChannel++;
if (EDIT_curChannel>schedArrayNum-1)
EDIT_curChannel=schedArrayNum-1;
+ if (EDIT_curChannel<0)
+ EDIT_curChannel=0;
if (EDIT_curChannel>currentFirst+2)
{
currentFirst++;
if (currentFirst>schedArrayNum-3)
currentFirst=schedArrayNum-3;
+ if (currentFirst<0)
+ currentFirst=0;
EDIT_curChannel=currentFirst+2;
}
outputLR();
@@ -1343,17 +1360,20 @@
break; */
case kRecord:
{
- delete osd;
- osd=NULL;
cEvent **ev=ev4ch(EDIT_curChannel);
- cTimer *timer = new cTimer(ev[EDIT_curEVI]);
- cTimer *t = Timers.GetTimer(timer);
- if (t)
+ if (ev[EDIT_curEVI] != NULL)
{
- delete timer;
- timer = t;
+ delete osd;
+ osd=NULL;
+ cTimer *timer = new cTimer(ev[EDIT_curEVI]);
+ cTimer *t = Timers.GetTimer(timer);
+ if (t)
+ {
+ delete timer;
+ timer = t;
+ }
+ met=new cMenuEditTimer(timer, !t);
}
- met=new cMenuEditTimer(timer, !t);
}
break;
default:
diff -urNad vdr-plugin-tvonscreen-1.0.141~/magazine.h vdr-plugin-tvonscreen-1.0.141/magazine.h
--- vdr-plugin-tvonscreen-1.0.141~/magazine.h 2006-06-18 15:59:36.000000000 +0200
+++ vdr-plugin-tvonscreen-1.0.141/magazine.h 2008-04-13 18:12:15.000000000 +0200
@@ -70,7 +70,7 @@
enum modes {SHOW,EDIT};
enum modes curmode;
- unsigned short EDIT_curEvent;
+ int EDIT_curEvent;
int EDIT_curChannel;
int EDIT_curEVI;