forked from github/server
coverity CID 22593: write to pointer after free
github issue #324 use free_land where we need it.
This commit is contained in:
parent
c298b7fd74
commit
976b6aaea1
|
@ -751,7 +751,7 @@ void remove_region(region ** rlist, region * r)
|
|||
deleted_regions = r;
|
||||
}
|
||||
|
||||
static void freeland(land_region * lr)
|
||||
void free_land(land_region * lr)
|
||||
{
|
||||
free(lr->ownership);
|
||||
while (lr->demands) {
|
||||
|
@ -817,7 +817,7 @@ void free_region(region * r)
|
|||
last = NULL;
|
||||
free(r->display);
|
||||
if (r->land)
|
||||
freeland(r->land);
|
||||
free_land(r->land);
|
||||
|
||||
if (r->msgs) {
|
||||
free_messagelist(r->msgs->begin);
|
||||
|
@ -997,7 +997,7 @@ void terraform_region(region * r, const terrain_type * terrain)
|
|||
region_setinfo(r, NULL);
|
||||
if (r->land != NULL) {
|
||||
i_freeall(&r->land->items);
|
||||
freeland(r->land);
|
||||
free_land(r->land);
|
||||
r->land = NULL;
|
||||
}
|
||||
rsettrees(r, 0, 0);
|
||||
|
|
|
@ -245,6 +245,7 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
void free_regions(void);
|
||||
void free_land(struct land_region * lr);
|
||||
|
||||
int region_get_morale(const region * r);
|
||||
void region_set_morale(region * r, int morale, int turn);
|
||||
|
|
|
@ -840,8 +840,8 @@ static region *readregion(struct gamedata *data, int x, int y)
|
|||
while (r->attribs)
|
||||
a_remove(&r->attribs, r->attribs);
|
||||
if (r->land) {
|
||||
free(r->land); /* mem leak */
|
||||
r->land->demands = 0; /* mem leak */
|
||||
free_land(r->land);
|
||||
r->land = 0;
|
||||
}
|
||||
while (r->resources) {
|
||||
rawmaterial *rm = r->resources;
|
||||
|
|
Loading…
Reference in New Issue