From 74ff891914c7f91b0f6c86a7a075a4fafdaf15e5 Mon Sep 17 00:00:00 2001 From: "M. Kristall" Date: Sat, 3 Oct 2009 11:41:43 +0000 Subject: * Fix a couple more places where files might not be closed (bug 3554) * Fix off-by-one errors and some gcc warnings --- src/cgame/cg_buildable.c | 14 ++++++++------ src/cgame/cg_particles.c | 8 +++++--- src/cgame/cg_ptr.c | 7 +++++-- src/cgame/cg_trails.c | 6 ++++-- 4 files changed, 22 insertions(+), 13 deletions(-) (limited to 'src/cgame') diff --git a/src/cgame/cg_buildable.c b/src/cgame/cg_buildable.c index ae0ed17e..00e2c2c2 100644 --- a/src/cgame/cg_buildable.c +++ b/src/cgame/cg_buildable.c @@ -169,12 +169,13 @@ static qboolean CG_ParseBuildableAnimationFile( const char *filename, buildable_ // load the file len = trap_FS_FOpenFile( filename, &f, FS_READ ); - if( len <= 0 ) + if( len < 0 ) return qfalse; - if( len >= sizeof( text ) - 1 ) + if( len == 0 || len >= sizeof( text ) - 1 ) { - CG_Printf( "File %s too long\n", filename ); + trap_FS_FCloseFile( f ); + CG_Printf( "File %s is %s\n", filename, len == 0 ? "empty" : "too long" ); return qfalse; } @@ -259,12 +260,13 @@ static qboolean CG_ParseBuildableSoundFile( const char *filename, buildable_t bu // load the file len = trap_FS_FOpenFile( filename, &f, FS_READ ); - if ( len <= 0 ) + if ( len < 0 ) return qfalse; - if ( len >= sizeof( text ) - 1 ) + if ( len == 0 || len >= sizeof( text ) - 1 ) { - CG_Printf( "File %s too long\n", filename ); + trap_FS_FCloseFile( f ); + CG_Printf( "File %s is %s\n", filename, len == 0 ? "empty" : "too long" ); return qfalse; } diff --git a/src/cgame/cg_particles.c b/src/cgame/cg_particles.c index c7023dbf..1f4bb4ca 100644 --- a/src/cgame/cg_particles.c +++ b/src/cgame/cg_particles.c @@ -1622,12 +1622,14 @@ static qboolean CG_ParseParticleFile( const char *fileName ) // load the file len = trap_FS_FOpenFile( fileName, &f, FS_READ ); - if( len <= 0 ) + if( len < 0 ) return qfalse; - if( len >= sizeof( text ) - 1 ) + if( len == 0 || len >= sizeof( text ) - 1 ) { - CG_Printf( S_COLOR_RED "ERROR: particle file %s too long\n", fileName ); + trap_FS_FCloseFile( f ); + CG_Printf( S_COLOR_RED "ERROR: particle file %s is %s\n", fileName, + len == 0 ? "empty" : "too long" ); return qfalse; } diff --git a/src/cgame/cg_ptr.c b/src/cgame/cg_ptr.c index 18810878..b5fa548e 100644 --- a/src/cgame/cg_ptr.c +++ b/src/cgame/cg_ptr.c @@ -42,12 +42,15 @@ int CG_ReadPTRCode( void ) // load the file len = trap_FS_FOpenFile( PTRC_FILE, &f, FS_READ ); - if( len <= 0 ) + if( len < 0 ) return 0; // should never happen - malformed write - if( len >= sizeof( text ) - 1 ) + if( len == 0 || len >= sizeof( text ) - 1 ) + { + trap_FS_FCloseFile( f ); return 0; + } trap_FS_Read( text, len, f ); text[ len ] = 0; diff --git a/src/cgame/cg_trails.c b/src/cgame/cg_trails.c index ca610461..f1fb0f5b 100644 --- a/src/cgame/cg_trails.c +++ b/src/cgame/cg_trails.c @@ -1060,9 +1060,11 @@ static qboolean CG_ParseTrailFile( const char *fileName ) if( len <= 0 ) return qfalse; - if( len >= sizeof( text ) - 1 ) + if( len == 0 || len >= sizeof( text ) - 1 ) { - CG_Printf( S_COLOR_RED "ERROR: trail file %s too long\n", fileName ); + trap_FS_FCloseFile( f ); + CG_Printf( S_COLOR_RED "ERROR: trail file %s is %s\n", fileName, + len == 0 ? "empty" : "too long" ); return qfalse; } -- cgit