From 746b232299090f0f249a25d07b5704eb795787f8 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 2 Aug 2003 13:23:58 +0200 Subject: [PATCH] Fixed a possible crash in case a VFAT file system is used without compiling VDR with VFAT=1 --- CONTRIBUTORS | 4 ++++ HISTORY | 2 ++ menu.c | 23 +++++++++++++---------- recorder.c | 8 +------- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index c066f7db..480994b5 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -738,3 +738,7 @@ Thomas Keil Kenneth Aafløy for fixing checking CA capabilities with the dvb-kernel driver + +Ernst Fürst + for reporting a crash in case a VFAT file system is used without compiling VDR + with VFAT=1 diff --git a/HISTORY b/HISTORY index 33d3b7b6..7f2fb871 100644 --- a/HISTORY +++ b/HISTORY @@ -2277,3 +2277,5 @@ Video Disk Recorder Revision History Aafløy). - Fixed selecting the device, because sometimes an FTA recording terminated a CA recording (thanks to Emil Naepflein). +- Fixed a possible crash in case a VFAT file system is used without compiling VDR + with VFAT=1 (thanks to Ernst Fürst for reporting this one). diff --git a/menu.c b/menu.c index ca98630c..b260ee38 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.262 2003/07/26 16:10:39 kls Exp $ + * $Id: menu.c 1.263 2003/08/02 13:23:58 kls Exp $ */ #include "menu.h" @@ -2993,16 +2993,19 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause) } cRecordingUserCommand::InvokeCommand(RUC_BEFORERECORDING, fileName); - const cChannel *ch = timer->Channel(); - recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2()); - if (device->AttachReceiver(recorder)) { - Recording.WriteSummary(); - cStatus::MsgRecording(device, Recording.Name()); - if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo() - cReplayControl::SetRecording(fileName, Recording.Name()); + isyslog("record %s", fileName); + if (MakeDirs(fileName, true)) { + const cChannel *ch = timer->Channel(); + recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2()); + if (device->AttachReceiver(recorder)) { + Recording.WriteSummary(); + cStatus::MsgRecording(device, Recording.Name()); + if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo() + cReplayControl::SetRecording(fileName, Recording.Name()); + } + else + DELETENULL(recorder); } - else - DELETENULL(recorder); } cRecordControl::~cRecordControl() diff --git a/recorder.c b/recorder.c index d7cc9c31..2583bae2 100644 --- a/recorder.c +++ b/recorder.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recorder.c 1.6 2003/05/16 13:33:04 kls Exp $ + * $Id: recorder.c 1.7 2003/08/02 13:01:19 kls Exp $ */ #include @@ -34,12 +34,6 @@ cRecorder::cRecorder(const char *FileName, int Ca, int Priority, int VPid, int A fileSize = 0; active = false; lastDiskSpaceCheck = time(NULL); - isyslog("record %s", FileName); - - // Create directories if necessary: - - if (!MakeDirs(FileName, true)) - return; // Make sure the disk is up and running: