mirror of https://github.com/OpenTTD/OpenTTD
(svn r7520) -Fix(r7348): memleak due to unconditionally overwriting the filename, name and info of a GRFConfig in IsGoodGRFConfigList.
parent
0bf22bdedf
commit
52cf13bff6
|
@ -163,9 +163,17 @@ bool IsGoodGRFConfigList(void)
|
||||||
res = false;
|
res = false;
|
||||||
} else {
|
} else {
|
||||||
DEBUG(grf, 1) ("[GRF] Loading GRF %08X from %s", BSWAP32(c->grfid), f->filename);
|
DEBUG(grf, 1) ("[GRF] Loading GRF %08X from %s", BSWAP32(c->grfid), f->filename);
|
||||||
c->filename = strdup(f->filename);
|
/* The filename could be the filename as in the savegame. As we need
|
||||||
c->name = strdup(f->name);
|
* to load the GRF here, we need the correct filename, so overwrite that
|
||||||
c->info = strdup(f->info);
|
* in any case and set the name and info when it is not set already.
|
||||||
|
* When the GCF_COPY flag is set, it is certain that the filename is
|
||||||
|
* already a local one, so there is no need to replace it. */
|
||||||
|
if (!HASBIT(c->flags, GCF_COPY)) {
|
||||||
|
free(c->filename);
|
||||||
|
c->filename = strdup(f->filename);
|
||||||
|
if (c->name == NULL) c->name = strdup(f->name);
|
||||||
|
if (c->info == NULL) c->info = strdup(f->info);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue