This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch debian/master
in repository openjk.

commit efbeb7cbbee591620932d053bb4a4f0131846538
Author: Razish <[email protected]>
Date:   Mon Dec 25 10:41:08 2017 +1100

    [MP] Properly close file handles in the case of errors. Also fixed some 
flag unsetting (EF_SOUNDTRACKER, WPFLAG_GOALPOINT)
---
 codemp/cgame/cg_event.c      |  2 +-
 codemp/cgame/cg_players.c    |  1 +
 codemp/cgame/cg_saga.c       |  7 +++++--
 codemp/game/NPC_stats.c      |  1 +
 codemp/game/ai_util.c        |  1 +
 codemp/game/ai_wpnav.c       |  7 ++++---
 codemp/game/bg_misc.c        | 28 ++++++----------------------
 codemp/game/bg_panimate.c    |  1 +
 codemp/game/bg_saberLoad.c   |  3 ++-
 codemp/game/bg_saga.c        | 14 ++++++++++----
 codemp/game/bg_vehicleLoad.c |  2 ++
 codemp/game/g_saga.c         |  7 +++++--
 codemp/game/g_utils.c        | 11 ++++-------
 codemp/ui/ui_force.c         |  1 +
 codemp/ui/ui_main.c          | 19 +++++++++++--------
 15 files changed, 55 insertions(+), 50 deletions(-)

diff --git a/codemp/cgame/cg_event.c b/codemp/cgame/cg_event.c
index bd10465..98d3992 100644
--- a/codemp/cgame/cg_event.c
+++ b/codemp/cgame/cg_event.c
@@ -3121,7 +3121,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
                DEBUGNAME("EV_MUTE_SOUND");
                if (cg_entities[es->trickedentindex2].currentState.eFlags & 
EF_SOUNDTRACKER)
                {
-                       cg_entities[es->trickedentindex2].currentState.eFlags 
-= EF_SOUNDTRACKER;
+                       cg_entities[es->trickedentindex2].currentState.eFlags 
&= ~EF_SOUNDTRACKER;
                }
                trap->S_MuteSound(es->trickedentindex2, es->trickedentindex);
                CG_S_StopLoopingSound(es->trickedentindex2, -1);
diff --git a/codemp/cgame/cg_players.c b/codemp/cgame/cg_players.c
index 1289716..6eac153 100644
--- a/codemp/cgame/cg_players.c
+++ b/codemp/cgame/cg_players.c
@@ -366,6 +366,7 @@ qboolean CG_ParseSurfsFile( const char *modelName, const 
char *skinName, char *s
        if ( len >= sizeof( text ) - 1 )
        {
                Com_Printf( "File %s too long\n", sfilename );
+               trap->FS_Close( f );
                return qfalse;
        }
 
diff --git a/codemp/cgame/cg_saga.c b/codemp/cgame/cg_saga.c
index 7f3ebde..9d688fb 100644
--- a/codemp/cgame/cg_saga.c
+++ b/codemp/cgame/cg_saga.c
@@ -188,8 +188,11 @@ void CG_InitSiegeMode(void)
 
        len = trap->FS_Open(levelname, &f, FS_READ);
 
-       if (!f || len >= MAX_SIEGE_INFO_SIZE)
-       {
+       if ( !f ) {
+               goto failure;
+       }
+       if ( len >= MAX_SIEGE_INFO_SIZE ) {
+               trap->FS_Close( f );
                goto failure;
        }
 
diff --git a/codemp/game/NPC_stats.c b/codemp/game/NPC_stats.c
index 0478405..4920ad8 100644
--- a/codemp/game/NPC_stats.c
+++ b/codemp/game/NPC_stats.c
@@ -3591,6 +3591,7 @@ void NPC_LoadParms( void )
                else
                {
                        if ( totallen + len >= MAX_NPC_DATA_SIZE ) {
+                               trap->FS_Close( f );
                                trap->Error( ERR_DROP, "NPC extensions (*.npc) 
are too large" );
                        }
                        trap->FS_Read(npcParseBuffer, len, f);
diff --git a/codemp/game/ai_util.c b/codemp/game/ai_util.c
index 44bd157..03dc9bb 100644
--- a/codemp/game/ai_util.c
+++ b/codemp/game/ai_util.c
@@ -656,6 +656,7 @@ void BotUtilizePersonality(bot_state_t *bs)
        {
                trap->Print(S_COLOR_RED "Personality file exceeds maximum 
length\n");
                B_TempFree(131072); //buf
+               trap->FS_Close( f );
                return;
        }
 
diff --git a/codemp/game/ai_wpnav.c b/codemp/game/ai_wpnav.c
index 992060f..562fe75 100644
--- a/codemp/game/ai_wpnav.c
+++ b/codemp/game/ai_wpnav.c
@@ -1886,7 +1886,7 @@ void CalculateWeightGoals(void)
 
                                if (gWPArray[i]->flags & WPFLAG_GOALPOINT)
                                {
-                                       gWPArray[i]->flags -= WPFLAG_GOALPOINT;
+                                       gWPArray[i]->flags &= ~WPFLAG_GOALPOINT;
                                }
                        }
 
@@ -2047,6 +2047,7 @@ int LoadPathData(const char *filename)
        if (len >= 524288)
        {
                trap->Print(S_COLOR_RED "Route file exceeds maximum length\n");
+               trap->FS_Close( f );
                return 0;
        }
 
@@ -3709,11 +3710,11 @@ int AcceptBotCommand(char *cmd, gentity_t *pl)
                        {
                                if (gWPArray[i]->flags & WPFLAG_ONEWAY_FWD)
                                {
-                                       gWPArray[i]->flags -= WPFLAG_ONEWAY_FWD;
+                                       gWPArray[i]->flags &= 
~WPFLAG_ONEWAY_FWD;
                                }
                                if (gWPArray[i]->flags & WPFLAG_ONEWAY_BACK)
                                {
-                                       gWPArray[i]->flags -= 
WPFLAG_ONEWAY_BACK;
+                                       gWPArray[i]->flags &= 
~WPFLAG_ONEWAY_BACK;
                                }
                        }
 
diff --git a/codemp/game/bg_misc.c b/codemp/game/bg_misc.c
index 3ad8529..10668df 100644
--- a/codemp/game/bg_misc.c
+++ b/codemp/game/bg_misc.c
@@ -322,31 +322,15 @@ int WeaponAttackAnim[WP_NUM_WEAPONS] =
        BOTH_ATTACK1//WP_TURRET,
 };
 
-qboolean BG_FileExists(const char *fileName)
-{
-       if (fileName && fileName[0])
-       {
-               int fh = 0;
-       #ifdef _GAME
-               trap->FS_Open(fileName, &fh, FS_READ);
-       #elif _CGAME
-               trap->FS_Open(fileName, &fh, FS_READ);
-       #elif UI_BUILD
-               trap->FS_Open(fileName, &fh, FS_READ);
-       #endif
-               if (fh > 0)
-               {
-               #ifdef _GAME
-                       trap->FS_Close(fh);
-               #elif _CGAME
-                       trap->FS_Close(fh);
-               #elif UI_BUILD
-                       trap->FS_Close(fh);
-               #endif
+qboolean BG_FileExists( const char *fileName ) {
+       if ( fileName && fileName[0] ) {
+               fileHandle_t f = NULL_FILE;
+               trap->FS_Open( fileName, &f, FS_READ );
+               if ( f > 0 ) {
+                       trap->FS_Close( f );
                        return qtrue;
                }
        }
-
        return qfalse;
 }
 
diff --git a/codemp/game/bg_panimate.c b/codemp/game/bg_panimate.c
index 3f6b9be..fa65f9d 100644
--- a/codemp/game/bg_panimate.c
+++ b/codemp/game/bg_panimate.c
@@ -2375,6 +2375,7 @@ int BG_ParseAnimationFile(const char *filename, 
animation_t *animset, qboolean i
                len = trap->FS_Open( filename, &f, FS_READ );
                if ( (len <= 0) || (len >= sizeof( BGPAFtext ) - 1) )
                {
+                       trap->FS_Close( f );
                        if (dynAlloc)
                        {
                                BG_AnimsetFree(animset);
diff --git a/codemp/game/bg_saberLoad.c b/codemp/game/bg_saberLoad.c
index 75abd36..ae7460d 100644
--- a/codemp/game/bg_saberLoad.c
+++ b/codemp/game/bg_saberLoad.c
@@ -2281,12 +2281,13 @@ void WP_SaberLoadParms( void )
 
                len = trap->FS_Open( va( "ext_data/sabers/%s", holdChar ), &f, 
FS_READ );
 
-               if ( len == -1 ) {
+               if ( !f ) {
                        Com_Printf( "WP_SaberLoadParms: error reading file: 
%s\n", holdChar );
                        continue;
                }
 
                if ( (totallen + len+1) >= MAX_SABER_DATA_SIZE ) {
+                       trap->FS_Close( f );
 #ifdef UI_BUILD
                        Com_Error( ERR_FATAL, "WP_SaberLoadParms: Saber 
extensions (*.sab) are too large!\nRan out of space before reading %s", 
holdChar );
 #else
diff --git a/codemp/game/bg_saga.c b/codemp/game/bg_saga.c
index deaded4..d67e339 100644
--- a/codemp/game/bg_saga.c
+++ b/codemp/game/bg_saga.c
@@ -782,8 +782,11 @@ void BG_SiegeParseClassFile(const char *filename, 
siegeClassDesc_t *descBuffer)
 
        len = trap->FS_Open( filename, &f, FS_READ );
 
-       if (!f || len >= 4096)
-       {
+       if (!f) {
+               return;
+       }
+       if (len >= 4096) {
+               trap->FS_Close( f );
                return;
        }
 
@@ -1265,8 +1268,11 @@ void BG_SiegeParseTeamFile(const char *filename)
 
        len = trap->FS_Open(filename, &f, FS_READ);
 
-       if (!f || len >= 2048)
-       {
+       if (!f) {
+               return;
+       }
+       if (len >= 2048) {
+               trap->FS_Close( f );
                return;
        }
 
diff --git a/codemp/game/bg_vehicleLoad.c b/codemp/game/bg_vehicleLoad.c
index a14fb28..a77d3de 100644
--- a/codemp/game/bg_vehicleLoad.c
+++ b/codemp/game/bg_vehicleLoad.c
@@ -1320,6 +1320,7 @@ void BG_VehWeaponLoadParms( void )
                        }
 
                        if ( totallen + len >= MAX_VEH_WEAPON_DATA_SIZE ) {
+                               trap->FS_Close( f );
                                Com_Error(ERR_DROP, "Vehicle Weapon extensions 
(*.vwp) are too large" );
                        }
                        strcat( marker, tempReadBuffer );
@@ -1386,6 +1387,7 @@ void BG_VehicleLoadParms( void )
                        }
 
                        if ( totallen + len >= MAX_VEHICLE_DATA_SIZE ) {
+                               trap->FS_Close( f );
                                Com_Error(ERR_DROP, "Vehicle extensions (*.veh) 
are too large" );
                        }
                        strcat( marker, tempReadBuffer );
diff --git a/codemp/game/g_saga.c b/codemp/game/g_saga.c
index fcb8769..ce905ad 100644
--- a/codemp/game/g_saga.c
+++ b/codemp/game/g_saga.c
@@ -171,8 +171,11 @@ void InitSiegeMode(void)
 
        len = trap->FS_Open(levelname, &f, FS_READ);
 
-       if (!f || len >= MAX_SIEGE_INFO_SIZE)
-       {
+       if (!f) {
+               goto failure;
+       }
+       if (len >= MAX_SIEGE_INFO_SIZE) {
+               trap->FS_Close( f );
                goto failure;
        }
 
diff --git a/codemp/game/g_utils.c b/codemp/game/g_utils.c
index 3ae79cc..bbda55a 100644
--- a/codemp/game/g_utils.c
+++ b/codemp/game/g_utils.c
@@ -721,11 +721,8 @@ static void G_SpewEntList(void)
        char className[MAX_STRING_CHARS];
        gentity_t *ent;
        char *str;
-#ifdef FINAL_BUILD
-       #define VM_OR_FINAL_BUILD
-#endif
 
-#ifndef VM_OR_FINAL_BUILD
+#ifdef _DEBUG
        fileHandle_t fh;
        trap->FS_Open("entspew.txt", &fh, FS_WRITE);
 #endif
@@ -753,7 +750,7 @@ static void G_SpewEntList(void)
 
                                str = va("TEMPENT %4i: EV %i\n", ent->s.number, 
ent->s.eType-ET_EVENTS);
                                Com_Printf(str);
-#ifndef VM_OR_FINAL_BUILD
+#ifdef _DEBUG
                                if (fh)
                                {
                                        trap->FS_Write(str, strlen(str), fh);
@@ -771,7 +768,7 @@ static void G_SpewEntList(void)
                        }
                        str = va("ENT %4i: Classname %s\n", ent->s.number, 
className);
                        Com_Printf(str);
-#ifndef VM_OR_FINAL_BUILD
+#ifdef _DEBUG
                        if (fh)
                        {
                                trap->FS_Write(str, strlen(str), fh);
@@ -784,7 +781,7 @@ static void G_SpewEntList(void)
 
        str = va("TempEnt count: %i\nTempEnt ST: %i\nNPC count: %i\nProjectile 
count: %i\n", numTempEnt, numTempEntST, numNPC, numProjectile);
        Com_Printf(str);
-#ifndef VM_OR_FINAL_BUILD
+#ifdef _DEBUG
        if (fh)
        {
                trap->FS_Write(str, strlen(str), fh);
diff --git a/codemp/ui/ui_force.c b/codemp/ui/ui_force.c
index b5a2676..898ad36 100644
--- a/codemp/ui/ui_force.c
+++ b/codemp/ui/ui_force.c
@@ -1202,6 +1202,7 @@ void UI_ForceConfigHandle( int oldindex, int newindex )
 
        if (len >= 8192)
        {
+               trap->FS_Close( f );
                return;
        }
 
diff --git a/codemp/ui/ui_main.c b/codemp/ui/ui_main.c
index ad767d8..94f67a7 100644
--- a/codemp/ui/ui_main.c
+++ b/codemp/ui/ui_main.c
@@ -322,14 +322,13 @@ int UI_ParseAnimationFile(const char *filename, 
animation_t *animset, qboolean i
        if (!UIPAFtextLoaded || !isHumanoid)
        { //rww - We are always using the same animation config now. So only 
load it once.
                len = trap->FS_Open( filename, &f, FS_READ );
-               if ( (len <= 0) || (len >= sizeof( UIPAFtext ) - 1) )
-               {
-                       if (len > 0)
-                       {
-                               Com_Error(ERR_DROP, "%s exceeds the allowed 
ui-side animation buffer!", filename);
-                       }
+               if ( !f ) {
                        return -1;
                }
+               if ( len >= sizeof( UIPAFtext ) - 1 ) {
+                       trap->FS_Close( f );
+                       Com_Error(ERR_DROP, "%s exceeds the allowed ui-side 
animation buffer!", filename);
+               }
 
                trap->FS_Read( UIPAFtext, len, f );
                UIPAFtext[len] = 0;
@@ -7125,8 +7124,11 @@ void UI_SetSiegeTeams(void)
 
        len = trap->FS_Open(levelname, &f, FS_READ);
 
-       if (!f || len >= MAX_SIEGE_INFO_SIZE)
-       {
+       if (!f) {
+               return;
+       }
+       if (len >= MAX_SIEGE_INFO_SIZE) {
+               trap->FS_Close( f );
                return;
        }
 
@@ -9703,6 +9705,7 @@ static void UI_BuildPlayerModel_List( qboolean inGameLoad 
)
                        buffer = malloc(filelen + 1);
                        if(!buffer)
                        {
+                               trap->FS_Close( f );
                                Com_Error(ERR_FATAL, "Could not allocate buffer 
to read %s", fpath);
                        }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-games/openjk.git

_______________________________________________
Pkg-games-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to