All pastes #459048 Raw Edit

Unnamed

public c v1 · immutable
#459048 ·published 2007-04-26 07:30 UTC
rendered paste body
Index: src/client/cl_campaign.c===================================================================--- src/client/cl_campaign.c    (Revision 7917)+++ src/client/cl_campaign.c    (Arbeitskopie)@@ -1712,6 +1712,8 @@        for (i = 0, mis = ccs.mission; i < ccs.numMissions; i++, mis++) {                /* get mission definition */                name = MSG_ReadString(sb);+               mis->def = NULL;+               mis->cause = NULL;                for (j = 0; j < numMissions; j++)                        if (!Q_strncmp(name, missions[j].name, MAX_VAR)) {                                mis->def = &missions[j];@@ -1720,6 +1722,16 @@                if (j >= numMissions)                        Com_Printf("......warning: Mission '%s' not found\n", name); +               /* ignore incomplete info */+               if (!mis->def) {+                       memset(mis, 0, sizeof(actMis_t));+                       mis--;+                       i--;+                       ccs.numMissions--;+                       Com_Printf("......warning: Incomplete mission info\n");+                       return qfalse;+               }+                /* get mission type and location */                mis->def->missionType = MSG_ReadByte(sb);                mis->def->storyRelated = MSG_ReadByte(sb);@@ -1736,21 +1748,23 @@                if (j >= numStageSets)                        Com_Printf("......warning: Stage set '%s' not found\n", name); +               /* ignore incomplete info */+               if (!mis->cause) {+                       memset(mis, 0, sizeof(actMis_t));+                       mis--;+                       i--;+                       ccs.numMissions--;+                       Com_Printf("......warning: Incomplete mission info\n");+                       return qfalse;+               }+                /* read position and time */                mis->realPos[0] = MSG_ReadFloat(sb);                mis->realPos[1] = MSG_ReadFloat(sb);                mis->expire.day = MSG_ReadLong(sb);                mis->expire.sec = MSG_ReadLong(sb);+                mis->def->onGeoscape = qtrue;--               /* ignore incomplete info */-               if (!mis->def || !mis->cause) {-                       memset(mis, 0, sizeof(actMis_t));-                       mis--;-                       i--;-                       ccs.numMissions--;-                       Com_Printf("......ignore incomplete mission info\n");-               }                /* manually set mission data for a base-attack */                if (mis->def->missionType == MIS_BASEATTACK) {                        /* Load IDX of base under attack */@@ -1766,9 +1780,13 @@         /* stores the select mission on geoscape */        selectedMission = MSG_ReadLong(sb);-       if (selectedMission >= 0)+       if (selectedMission >= 0 && selectedMission < ccs.numMissions) {                selMis = ccs.mission + selectedMission;-       else+               if (!selMis->def) {+                       Com_Printf("......warning: incomplete mission data\n");+                       return qfalse;+               }+       } else                selMis = NULL;         /* and now fix the mission pointers or let the aircraft return to base */