@@ -94,14 +94,19 @@ void ClearGRFConfig(GRFConfig **config)
/* GCF_COPY as in NOT strdupped/alloced the filename, name and info */
if (!HASBIT((*config)->flags, GCF_COPY)) {
free((*config)->filename);
free((*config)->full_path);
free((*config)->name);
free((*config)->info);
if ((*config)->error != NULL) {
free((*config)->error->custom_message);
free((*config)->error->data);
free((*config)->error);
}
free(*config);
*config = NULL;
/* Clear a GRF Config list */
@@ -131,12 +136,14 @@ GRFConfig **CopyGRFConfigList(GRFConfig
if (src->full_path != NULL) c->full_path = strdup(src->full_path);
if (src->name != NULL) c->name = strdup(src->name);
if (src->info != NULL) c->info = strdup(src->info);
if (src->error != NULL) {
c->error = CallocT<GRFError>(1);
memcpy(c->error, src->error, sizeof(GRFError));
if (src->error->data != NULL) c->error->data = strdup(src->error->data);
if (src->error->custom_message != NULL) c->error->custom_message = strdup(src->error->custom_message);
*dst = c;
dst = &c->next;