From 1240537a4b96986bb5766a980fe6de8b2041a9f7 Mon Sep 17 00:00:00 2001 From: Marcin Kurczewski Date: Sat, 1 Feb 2025 18:05:06 +0100 Subject: [PATCH] tr2: fix valgrind complaints --- src/libtrx/engine/video.c | 7 +++++-- src/tr2/decomp/savegame.c | 6 +++--- src/tr2/game/shell/common.c | 4 ++++ src/tr2/global/const.h | 1 + src/tr2/global/types_decomp.h | 2 +- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/libtrx/engine/video.c b/src/libtrx/engine/video.c index 03fde7ed4..adc93fe61 100644 --- a/src/libtrx/engine/video.c +++ b/src/libtrx/engine/video.c @@ -267,7 +267,7 @@ typedef struct { } M_STATE; static int64_t m_AudioCallbackTime; -static SDL_AudioDeviceID m_AudioDevice; +static SDL_AudioDeviceID m_AudioDevice = 0; static int M_PacketQueuePutPrivate(M_PACKET_QUEUE *q, AVPacket *pkt) { @@ -778,10 +778,13 @@ static void M_StreamComponentClose(M_STATE *is, int stream_index) switch (codecpar->codec_type) { case AVMEDIA_TYPE_AUDIO: M_DecoderAbort(&is->auddec, &is->sampq); - SDL_CloseAudioDevice(m_AudioDevice); M_DecoderShutdown(&is->auddec); swr_free(&is->swr_ctx); av_freep(&is->audio_buf1); + if (m_AudioDevice > 0) { + SDL_CloseAudioDevice(m_AudioDevice); + m_AudioDevice = 0; + } is->audio_buf1_size = 0; is->audio_buf = nullptr; diff --git a/src/tr2/decomp/savegame.c b/src/tr2/decomp/savegame.c index 9afaf3c33..582d3807e 100644 --- a/src/tr2/decomp/savegame.c +++ b/src/tr2/decomp/savegame.c @@ -28,7 +28,6 @@ #include #include -#define MAX_SG_BUFFER_SIZE 6272 #define SAVE_CREATURE (1 << 7) #define SPECIAL_READ_WRITES \ @@ -875,7 +874,7 @@ void CreateSaveGameInfo(void) g_SaveGame.num_key[3] = Inv_RequestItem(O_KEY_ITEM_4); ResetSG(); - memset(g_SaveGame.buffer, 0, sizeof(g_SaveGame.buffer)); + memset(g_SaveGame.buffer, 0, MAX_SG_BUFFER_SIZE); M_WriteS32(g_FlipStatus); for (int32_t i = 0; i < MAX_FLIP_MAPS; i++) { @@ -1057,7 +1056,8 @@ int32_t S_SaveGame(const int32_t slot_num) const GF_LEVEL *const current_level = GF_GetLevel(GFLT_MAIN, g_SaveGame.current_level); - sprintf(file_name, "%s", current_level->title); + memset(file_name, 0, 75); + snprintf(file_name, 75, "%s", current_level->title); File_WriteData(fp, file_name, 75); File_WriteS32(fp, g_SaveCounter); M_WriteStartInfos(fp); diff --git a/src/tr2/game/shell/common.c b/src/tr2/game/shell/common.c index 21117fe3f..6d753e532 100644 --- a/src/tr2/game/shell/common.c +++ b/src/tr2/game/shell/common.c @@ -433,6 +433,8 @@ void Shell_Main(void) void Shell_Shutdown(void) { + SDL_DestroyWindow(g_SDLWindow); + GF_Shutdown(); GameString_Shutdown(); Console_Shutdown(); @@ -442,6 +444,8 @@ void Shell_Shutdown(void) GameBuf_Shutdown(); Config_Shutdown(); EnumMap_Shutdown(); + + SDL_Quit(); } const char *Shell_GetConfigPath(void) diff --git a/src/tr2/global/const.h b/src/tr2/global/const.h index 2d7dcca64..86a290006 100644 --- a/src/tr2/global/const.h +++ b/src/tr2/global/const.h @@ -41,6 +41,7 @@ #define MAX_REQUESTER_ITEMS 24 #define MAX_SAVE_SLOTS 16 #define MAX_ASSAULT_TIMES 10 +#define MAX_SG_BUFFER_SIZE 6272 #define DEATH_WAIT (5 * 2 * FRAMES_PER_SECOND) // = 300 #define DEATH_WAIT_INPUT (2 * FRAMES_PER_SECOND) // = 60 diff --git a/src/tr2/global/types_decomp.h b/src/tr2/global/types_decomp.h index d05ae92ad..cea075624 100644 --- a/src/tr2/global/types_decomp.h +++ b/src/tr2/global/types_decomp.h @@ -149,7 +149,7 @@ typedef struct { uint8_t num_puzzle[4]; uint8_t num_key[4]; uint16_t reserved; - char buffer[6272]; // MAX_SG_BUFFER_SIZE + char buffer[MAX_SG_BUFFER_SIZE]; } SAVEGAME_INFO; typedef struct {