diff --git a/code/client/snd_dma.c b/code/client/snd_dma.c index 24024121..487617c2 100644 --- a/code/client/snd_dma.c +++ b/code/client/snd_dma.c @@ -258,14 +258,17 @@ static sfx_t *S_FindName( const char *name ) { sfx_t *sfx; if (!name) { - Com_Error (ERR_FATAL, "S_FindName: NULL"); + Com_Error(ERR_FATAL, "Sound name is NULL"); } + if (!name[0]) { - Com_Error (ERR_FATAL, "S_FindName: empty name"); + Com_Printf( S_COLOR_YELLOW "WARNING: Sound name is empty\n" ); + return NULL; } if (strlen(name) >= MAX_QPATH) { - Com_Error (ERR_FATAL, "Sound name too long: %s", name); + Com_Printf( S_COLOR_YELLOW "WARNING: Sound name is too long: %s\n", name ); + return NULL; } hash = S_HashSFXName(name); @@ -351,12 +354,11 @@ sfxHandle_t S_Base_RegisterSound( const char *name, qboolean compressed ) { return 0; } - if ( strlen( name ) >= MAX_QPATH ) { - Com_Printf( "Sound name exceeds MAX_QPATH\n" ); + sfx = S_FindName( name ); + if ( !sfx ) { return 0; } - sfx = S_FindName( name ); if ( sfx->soundData ) { if ( sfx->defaultSound ) { Com_Printf( S_COLOR_YELLOW "WARNING: could not find %s - using default\n", sfx->soundName ); diff --git a/code/client/snd_openal.c b/code/client/snd_openal.c index d2ce0e8a..9ca7a82c 100644 --- a/code/client/snd_openal.c +++ b/code/client/snd_openal.c @@ -194,6 +194,20 @@ static sfxHandle_t S_AL_BufferFind(const char *filename) sfxHandle_t sfx = -1; int i; + if ( !filename ) { + Com_Error( ERR_FATAL, "Sound name is NULL" ); + } + + if ( !filename[0] ) { + Com_Printf( S_COLOR_YELLOW "WARNING: Sound name is empty\n" ); + return 0; + } + + if ( strlen( filename ) >= MAX_QPATH ) { + Com_Printf( S_COLOR_YELLOW "WARNING: Sound name is too long: %s\n", filename ); + return 0; + } + for(i = 0; i < numSfx; i++) { if(!Q_stricmp(knownSfx[i].filename, filename))