[Fix] Fixed double free if an invalid faction was loaded.
This commit is contained in:
parent
98eac283ef
commit
7b77faa53e
@ -461,6 +461,7 @@ int pfaction_save(xmlTextWriterPtr writer) {
|
||||
int pfaction_load(xmlNodePtr parent) {
|
||||
xmlNodePtr node, cur;
|
||||
char* str;
|
||||
int faction;
|
||||
|
||||
node = parent->xmlChildrenNode;
|
||||
|
||||
@ -470,7 +471,9 @@ int pfaction_load(xmlNodePtr parent) {
|
||||
do {
|
||||
if(xml_isNode(cur, "factions")) {
|
||||
xmlr_attr(cur, "name", str);
|
||||
faction_stack[faction_get(str)].player = xml_getInt(cur);
|
||||
faction = faction_get(str);
|
||||
if(faction != -1) /* Faction is valid. */
|
||||
faction_stack[faction].player = xml_getInt(cur);
|
||||
free(str);
|
||||
}
|
||||
} while(xml_nextNode(cur));
|
||||
|
Loading…
Reference in New Issue
Block a user