Fixed a possible crash in case a VFAT file system is used without compiling VDR with VFAT=1

This commit is contained in:
Klaus Schmidinger 2003-08-02 13:23:58 +02:00
parent 44992533f0
commit 746b232299
4 changed files with 20 additions and 17 deletions

View File

@ -738,3 +738,7 @@ Thomas Keil <tk@commedia-group.com>
Kenneth Aafløy <ke-aa@frisurf.no> Kenneth Aafløy <ke-aa@frisurf.no>
for fixing checking CA capabilities with the dvb-kernel driver for fixing checking CA capabilities with the dvb-kernel driver
Ernst Fürst <ernstfuerst@swissonline.ch>
for reporting a crash in case a VFAT file system is used without compiling VDR
with VFAT=1

View File

@ -2277,3 +2277,5 @@ Video Disk Recorder Revision History
Aafløy). Aafløy).
- Fixed selecting the device, because sometimes an FTA recording terminated a - Fixed selecting the device, because sometimes an FTA recording terminated a
CA recording (thanks to Emil Naepflein). 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).

23
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "menu.h"
@ -2993,16 +2993,19 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause)
} }
cRecordingUserCommand::InvokeCommand(RUC_BEFORERECORDING, fileName); cRecordingUserCommand::InvokeCommand(RUC_BEFORERECORDING, fileName);
const cChannel *ch = timer->Channel(); isyslog("record %s", fileName);
recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2()); if (MakeDirs(fileName, true)) {
if (device->AttachReceiver(recorder)) { const cChannel *ch = timer->Channel();
Recording.WriteSummary(); recorder = new cRecorder(fileName, ch->Ca(), timer->Priority(), ch->Vpid(), ch->Apid1(), ch->Apid2(), ch->Dpid1(), ch->Dpid2());
cStatus::MsgRecording(device, Recording.Name()); if (device->AttachReceiver(recorder)) {
if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo() Recording.WriteSummary();
cReplayControl::SetRecording(fileName, Recording.Name()); 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() cRecordControl::~cRecordControl()

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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 <stdarg.h> #include <stdarg.h>
@ -34,12 +34,6 @@ cRecorder::cRecorder(const char *FileName, int Ca, int Priority, int VPid, int A
fileSize = 0; fileSize = 0;
active = false; active = false;
lastDiskSpaceCheck = time(NULL); lastDiskSpaceCheck = time(NULL);
isyslog("record %s", FileName);
// Create directories if necessary:
if (!MakeDirs(FileName, true))
return;
// Make sure the disk is up and running: // Make sure the disk is up and running: