From b04f71562dc26ca4e98b12ae835c7e3291c2792f Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 20 Nov 2004 11:00:26 +0100 Subject: Fixed a possible crash when pausing live video and the recording was unable to start --- CONTRIBUTORS | 4 ++++ HISTORY | 5 ++++- menu.c | 10 ++++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d6dfba1c..3ee94b44 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1152,3 +1152,7 @@ Joachim Wilke Sascha Klek for reporting a problem with the '0' key in the "Day" item of the "Timers" menu + +Andreas Brugger + for reporting a possible crash when pausing live video and the recording was + unable to start, maybe because there was no lock on the device diff --git a/HISTORY b/HISTORY index 42f62cb0..5fe0e37c 100644 --- a/HISTORY +++ b/HISTORY @@ -3139,7 +3139,7 @@ Video Disk Recorder Revision History days ('1' is monday). Thanks to Sascha Klek for reporting a problem with the '0' key in the "Day" item of the "Timers" menu. -2004-11-19: Version 1.3.17 +2004-11-20: Version 1.3.17 - Fixed cRemux::ScanVideoPacket() to make sure it doesn't access memory beyond the end of the given buffer, which has caused some unjustified "unknown @@ -3149,3 +3149,6 @@ Video Disk Recorder Revision History If you want to use the old DVB driver just revert this line to what it was in VDR version 1.3.16. The 'runvdr' script by default uses the "build-2.4" driver. If you want to use "build-2.6" just edit that file as necessary. +- Fixed a possible crash when pausing live video and the recording was unable + to start, maybe because there was no lock on the device (thanks to Andreas + Brugger for reporting this one). diff --git a/menu.c b/menu.c index f5c3c611..f482ad17 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.319 2004/11/01 13:49:40 kls Exp $ + * $Id: menu.c 1.320 2004/11/20 10:49:17 kls Exp $ */ #include "menu.h" @@ -2833,10 +2833,16 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause) if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo() cReplayControl::SetRecording(fileName, Recording.Name()); Recordings.AddByName(fileName); + return; } else DELETENULL(recorder); } + if (!Timer) { + Timers.Del(timer); + Timers.SetModified(); + timer = NULL; + } } cRecordControl::~cRecordControl() @@ -2928,7 +2934,7 @@ bool cRecordControls::Start(cTimer *Timer, bool Pause) for (int i = 0; i < MAXRECORDCONTROLS; i++) { if (!RecordControls[i]) { RecordControls[i] = new cRecordControl(device, Timer, Pause); - return true; + return RecordControls[i]->Process(time(NULL)); } } } -- cgit v1.2.3