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(); }