152 } |
152 } |
153 |
153 |
154 case 6: /* Add selection to list */ |
154 case 6: /* Add selection to list */ |
155 if (WP(w, newgrf_add_d).sel != NULL) { |
155 if (WP(w, newgrf_add_d).sel != NULL) { |
156 const GRFConfig *src = WP(w, newgrf_add_d).sel; |
156 const GRFConfig *src = WP(w, newgrf_add_d).sel; |
157 GRFConfig **list, *c; |
157 GRFConfig **list; |
158 |
158 |
159 /* Find last entry in the list, checking for duplicate grfid on the way */ |
159 /* Find last entry in the list, checking for duplicate grfid on the way */ |
160 for (list = WP(w, newgrf_add_d).list; *list != NULL; list = &(*list)->next) { |
160 for (list = WP(w, newgrf_add_d).list; *list != NULL; list = &(*list)->next) { |
161 if ((*list)->grfid == src->grfid) { |
161 if ((*list)->grfid == src->grfid) { |
162 ShowErrorMessage(INVALID_STRING_ID, STR_NEWGRF_DUPLICATE_GRFID, 0, 0); |
162 ShowErrorMessage(INVALID_STRING_ID, STR_NEWGRF_DUPLICATE_GRFID, 0, 0); |
163 return; |
163 return; |
164 } |
164 } |
165 } |
165 } |
166 |
166 |
167 /* Copy GRF details from scanned list */ |
167 /* Copy GRF details from scanned list */ |
168 CallocT(&c, 1); |
168 GRFConfig *c = CallocT<GRFConfig>(1); |
169 *c = *src; |
169 *c = *src; |
170 c->filename = strdup(src->filename); |
170 c->filename = strdup(src->filename); |
171 if (src->name != NULL) c->name = strdup(src->name); |
171 if (src->name != NULL) c->name = strdup(src->name); |
172 if (src->info != NULL) c->info = strdup(src->info); |
172 if (src->info != NULL) c->info = strdup(src->info); |
173 c->next = NULL; |
173 c->next = NULL; |