diff -up vdr-1.6.0/recording.c~ vdr-1.6.0/recording.c
--- vdr-1.6.0/recording.c~	2008-02-24 12:28:53.000000000 +0200
+++ vdr-1.6.0/recording.c	2009-02-27 21:18:55.000000000 +0200
@@ -509,8 +509,8 @@ cRecording::cRecording(cTimer *Timer, co
      Utf8Strn0Cpy(SubtitleBuffer, Subtitle, MAX_SUBTITLE_LENGTH);
      Subtitle = SubtitleBuffer;
      }
-  char *macroTITLE   = strstr(Timer->File(), TIMERMACRO_TITLE);
-  char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE);
+  const char *macroTITLE   = strstr(Timer->File(), TIMERMACRO_TITLE);
+  const char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE);
   if (macroTITLE || macroEPISODE) {
      name = strdup(Timer->File());
      name = strreplace(name, TIMERMACRO_TITLE, Title);
@@ -551,7 +551,7 @@ cRecording::cRecording(const char *FileN
   sortBuffer = NULL;
   fileName = strdup(FileName);
   FileName += strlen(VideoDirectory) + 1;
-  char *p = strrchr(FileName, '/');
+  const char *p = strrchr(FileName, '/');
 
   name = NULL;
   info = new cRecordingInfo;
@@ -1022,15 +1022,17 @@ void cRecordings::DelByName(const char *
   if (recording) {
      cThreadLock DeletedRecordingsLock(&DeletedRecordings);
      Del(recording, false);
-     char *ext = strrchr(recording->FileName(), '.');
+     char *NewName = strdup(recording->FileName());
+     char *ext = strrchr(NewName, '.');
      if (ext) {
         strncpy(ext, DELEXT, strlen(ext));
-        recording->fileSizeMB = DirSizeMB(recording->FileName());
+        recording->fileSizeMB = DirSizeMB(NewName);
         recording->deleted = time(NULL);
         DeletedRecordings.Add(recording);
         }
      else
         delete recording;
+     free(NewName);
      ChangeState();
      TouchUpdate();
      }
