From 010bf63d4255592c5ae7ab84c211d10fd510724e Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sat, 8 Aug 2026 16:41:49 +0500 Subject: [PATCH] engine: client: soundlib: refuse to loop WAV files that have broken "cue " chunk (for example, if loopstart points at invalid offset) --- engine/client/soundlib/snd_wav.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/engine/client/soundlib/snd_wav.c b/engine/client/soundlib/snd_wav.c index 47888aeb..da944a2f 100644 --- a/engine/client/soundlib/snd_wav.c +++ b/engine/client/soundlib/snd_wav.c @@ -312,6 +312,13 @@ qboolean Sound_LoadWAV( const char *name, const byte *buffer, fs_offset_t filesi return Sound_LoadMPG( name, buffer + hdr_size, filesize - hdr_size ); } + if( FBitSet( sound.flags, SOUND_LOOPED ) && sound.loopstart >= sound.samples ) + { + Con_DPrintf( S_WARN "%s: %s has bad loop start %u (%u samples total), disabling looping\n", __func__, name, sound.loopstart, sound.samples ); + ClearBits( sound.flags, SOUND_LOOPED ); + sound.loopstart = 0; + } + // Load the data sound.size = sound.samples * sound.width * sound.channels; sound.wav = Mem_Malloc( host.soundpool, sound.size );