Don't allow rogue files to crash game at startup.
This commit is contained in:
parent
d042d2d02c
commit
798135eadf
|
@ -345,6 +345,10 @@ static void loadCapitalShipDef(char *filename)
|
|||
|
||||
text = readFile(filename);
|
||||
|
||||
root = cJSON_Parse(text);
|
||||
|
||||
if (root)
|
||||
{
|
||||
e = malloc(sizeof(Entity));
|
||||
memset(e, 0, sizeof(Entity));
|
||||
defTail->next = e;
|
||||
|
@ -353,8 +357,6 @@ static void loadCapitalShipDef(char *filename)
|
|||
e->type = ET_CAPITAL_SHIP;
|
||||
e->active = 1;
|
||||
|
||||
root = cJSON_Parse(text);
|
||||
|
||||
STRNCPY(e->name, cJSON_GetObjectItem(root, "name")->valuestring, MAX_NAME_LENGTH);
|
||||
STRNCPY(e->defName, e->name, MAX_NAME_LENGTH);
|
||||
e->shield = e->maxShield = cJSON_GetObjectItem(root, "shield")->valueint;
|
||||
|
@ -376,6 +378,8 @@ static void loadCapitalShipDef(char *filename)
|
|||
loadEngines(e, cJSON_GetObjectItem(root, "engines"));
|
||||
|
||||
cJSON_Delete(root);
|
||||
}
|
||||
|
||||
free(text);
|
||||
}
|
||||
|
||||
|
|
|
@ -649,6 +649,10 @@ static void loadFighterDef(char *filename)
|
|||
|
||||
text = readFile(filename);
|
||||
|
||||
root = cJSON_Parse(text);
|
||||
|
||||
if (root)
|
||||
{
|
||||
e = malloc(sizeof(Entity));
|
||||
memset(e, 0, sizeof(Entity));
|
||||
defTail->next = e;
|
||||
|
@ -657,8 +661,6 @@ static void loadFighterDef(char *filename)
|
|||
e->type = ET_FIGHTER;
|
||||
e->active = 1;
|
||||
|
||||
root = cJSON_Parse(text);
|
||||
|
||||
STRNCPY(e->name, cJSON_GetObjectItem(root, "name")->valuestring, MAX_NAME_LENGTH);
|
||||
STRNCPY(e->defName, e->name, MAX_NAME_LENGTH);
|
||||
e->health = e->maxHealth = cJSON_GetObjectItem(root, "health")->valueint;
|
||||
|
@ -717,6 +719,8 @@ static void loadFighterDef(char *filename)
|
|||
e->systemPower = 100;
|
||||
|
||||
cJSON_Delete(root);
|
||||
}
|
||||
|
||||
free(text);
|
||||
}
|
||||
|
||||
|
|
|
@ -67,8 +67,12 @@ void initChallenges(void)
|
|||
sprintf(path, "data/challenges/%s", filenames[i]);
|
||||
|
||||
mission = loadMissionMeta(path);
|
||||
|
||||
if (mission)
|
||||
{
|
||||
tail->next = mission;
|
||||
tail = mission;
|
||||
}
|
||||
|
||||
free(filenames[i]);
|
||||
}
|
||||
|
|
|
@ -48,6 +48,10 @@ Mission *loadMissionMeta(char *filename)
|
|||
|
||||
root = cJSON_Parse(text);
|
||||
|
||||
mission = NULL;
|
||||
|
||||
if (root)
|
||||
{
|
||||
mission = malloc(sizeof(Mission));
|
||||
memset(mission, 0, sizeof(Mission));
|
||||
|
||||
|
@ -116,6 +120,8 @@ Mission *loadMissionMeta(char *filename)
|
|||
}
|
||||
|
||||
cJSON_Delete(root);
|
||||
}
|
||||
|
||||
free(text);
|
||||
|
||||
return mission;
|
||||
|
|
|
@ -99,8 +99,12 @@ static void loadMissions(StarSystem *starSystem)
|
|||
sprintf(path, "data/missions/%s/%s", name, filenames[i]);
|
||||
|
||||
mission = loadMissionMeta(path);
|
||||
|
||||
if (mission)
|
||||
{
|
||||
tail->next = mission;
|
||||
tail = mission;
|
||||
}
|
||||
|
||||
free(filenames[i]);
|
||||
}
|
||||
|
|
|
@ -363,6 +363,8 @@ static void loadWidgetSet(char *filename)
|
|||
text = readFile(filename);
|
||||
root = cJSON_Parse(text);
|
||||
|
||||
if (root)
|
||||
{
|
||||
for (node = root->child ; node != NULL ; node = node->next)
|
||||
{
|
||||
w = malloc(sizeof(Widget));
|
||||
|
@ -422,6 +424,8 @@ static void loadWidgetSet(char *filename)
|
|||
}
|
||||
|
||||
cJSON_Delete(root);
|
||||
}
|
||||
|
||||
free(text);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue