From a3e48bef27b195745cbadaf67ba9b943c88e5caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20M=C3=BCller?= Date: Fri, 30 Dec 2022 14:20:42 +0100 Subject: [PATCH] Prevent temporary demo file from being deleted multiple times Each time the client disconnected or stopped a demo, it tried to delete the previous temporary replay file, which causes an error message "could not delete file" to be shown in the console. This is prevented by clearing the current filename of the demo recorder after deleting the file. --- src/engine/client/client.cpp | 3 +++ src/engine/shared/demo.h | 1 + 2 files changed, 4 insertions(+) diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp index 10564b550..67eb5ca3f 100644 --- a/src/engine/client/client.cpp +++ b/src/engine/client/client.cpp @@ -3978,7 +3978,10 @@ void CClient::DemoRecorder_Stop(int Recorder, bool RemoveFile) { const char *pFilename = m_aDemoRecorder[Recorder].GetCurrentFilename(); if(pFilename[0] != '\0') + { Storage()->RemoveFile(pFilename, IStorage::TYPE_SAVE); + m_aDemoRecorder[Recorder].ClearCurrentFilename(); + } } } diff --git a/src/engine/shared/demo.h b/src/engine/shared/demo.h index 589f6ec38..b9706d585 100644 --- a/src/engine/shared/demo.h +++ b/src/engine/shared/demo.h @@ -49,6 +49,7 @@ public: bool IsRecording() const override { return m_File != nullptr; } char *GetCurrentFilename() override { return m_aCurrentFilename; } + void ClearCurrentFilename() { m_aCurrentFilename[0] = '\0'; } int Length() const override { return (m_LastTickMarker - m_FirstTick) / SERVER_TICK_SPEED; } };