[Change] A little cleanup and optimization.
This commit is contained in:
parent
1abb2c117d
commit
dc0ecd40ae
25
src/space.c
25
src/space.c
@ -696,16 +696,14 @@ static int planets_load(void) {
|
|||||||
* @return 0 on success.
|
* @return 0 on success.
|
||||||
*/
|
*/
|
||||||
static int planet_parse(Planet* planet, const xmlNodePtr parent) {
|
static int planet_parse(Planet* planet, const xmlNodePtr parent) {
|
||||||
int i;
|
int i, mem;
|
||||||
char str[PATH_MAX];
|
char str[PATH_MAX];
|
||||||
xmlNodePtr node, cur, ccur;
|
xmlNodePtr node, cur, ccur;
|
||||||
int len;
|
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
|
|
||||||
/* Clear up memory for sane defaults. */
|
/* Clear up memory for sane defaults. */
|
||||||
memset(planet, 0, sizeof(Planet));
|
memset(planet, 0, sizeof(Planet));
|
||||||
planet->faction = -1;
|
planet->faction = -1;
|
||||||
str[0] = '\0';
|
|
||||||
flags = 0;
|
flags = 0;
|
||||||
|
|
||||||
/* Get the name. */
|
/* Get the name. */
|
||||||
@ -721,9 +719,8 @@ static int planet_parse(Planet* planet, const xmlNodePtr parent) {
|
|||||||
PLANET_GFX_SPACE"%s", 1, 1, 0);
|
PLANET_GFX_SPACE"%s", 1, 1, 0);
|
||||||
}
|
}
|
||||||
else if(xml_isNode(cur, "exterior")) { /* Load land gfx. */
|
else if(xml_isNode(cur, "exterior")) { /* Load land gfx. */
|
||||||
len = strlen(xml_raw(cur)) + sizeof(PLANET_GFX_EXTERIOR);
|
snprintf(str, PATH_MAX, PLANET_GFX_EXTERIOR"%s", xml_get(cur));
|
||||||
planet->gfx_exterior = malloc(len);
|
planet->gfx_exterior = strdup(str);
|
||||||
snprintf(planet->gfx_exterior, len, PLANET_GFX_EXTERIOR"%s", xml_get(cur));
|
|
||||||
}
|
}
|
||||||
} while(xml_nextNode(cur));
|
} while(xml_nextNode(cur));
|
||||||
}
|
}
|
||||||
@ -779,15 +776,23 @@ static int planet_parse(Planet* planet, const xmlNodePtr parent) {
|
|||||||
}
|
}
|
||||||
else if(xml_isNode(cur, "commodities")) {
|
else if(xml_isNode(cur, "commodities")) {
|
||||||
ccur = cur->children;
|
ccur = cur->children;
|
||||||
|
mem = 0;
|
||||||
do {
|
do {
|
||||||
if(xml_isNode(ccur, "commodity")) {
|
if(xml_isNode(ccur, "commodity")) {
|
||||||
planet->commodities = realloc(planet->commodities,
|
|
||||||
(planet->ncommodities+1) * sizeof(Commodity*));
|
|
||||||
planet->commodities[planet->ncommodities] =
|
|
||||||
commodity_get(xml_get(ccur));
|
|
||||||
planet->ncommodities++;
|
planet->ncommodities++;
|
||||||
|
/* Memory must grow. */
|
||||||
|
if(planet->ncommodities > mem) {
|
||||||
|
mem += CHUNK_SIZE_SMALL;
|
||||||
|
planet->commodities = realloc(planet->commodities,
|
||||||
|
mem * sizeof(Commodity*));
|
||||||
|
}
|
||||||
|
planet->commodities[planet->ncommodities - 1] =
|
||||||
|
commodity_get(xml_get(ccur));
|
||||||
}
|
}
|
||||||
} while(xml_nextNode(ccur));
|
} while(xml_nextNode(ccur));
|
||||||
|
/* Shrink to minimum size. */
|
||||||
|
planet->commodities = realloc(planet->commodities,
|
||||||
|
planet->ncommodities * sizeof(Commodity*));
|
||||||
}
|
}
|
||||||
} while(xml_nextNode(cur));
|
} while(xml_nextNode(cur));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user