|
|
@ -1002,17 +1002,17 @@ CommandCost CmdProgramSignalTraceRestrictProgMgmt(TileIndex tile, DoCommandFlag
|
|
|
|
switch (type) {
|
|
|
|
switch (type) {
|
|
|
|
case TRDCT_PROG_COPY: {
|
|
|
|
case TRDCT_PROG_COPY: {
|
|
|
|
TraceRestrictRemoveProgramMapping(self);
|
|
|
|
TraceRestrictRemoveProgramMapping(self);
|
|
|
|
TraceRestrictProgram *prog = GetTraceRestrictProgram(self, true);
|
|
|
|
|
|
|
|
if (!prog) {
|
|
|
|
|
|
|
|
// allocation failed
|
|
|
|
|
|
|
|
return CMD_ERROR;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TraceRestrictProgram *source_prog = GetTraceRestrictProgram(source, false);
|
|
|
|
TraceRestrictProgram *source_prog = GetTraceRestrictProgram(source, false);
|
|
|
|
if (source_prog) {
|
|
|
|
if (source_prog && !source_prog->items.empty()) {
|
|
|
|
|
|
|
|
TraceRestrictProgram *prog = GetTraceRestrictProgram(self, true);
|
|
|
|
|
|
|
|
if (!prog) {
|
|
|
|
|
|
|
|
// allocation failed
|
|
|
|
|
|
|
|
return CMD_ERROR;
|
|
|
|
|
|
|
|
}
|
|
|
|
prog->items = source_prog->items; // copy
|
|
|
|
prog->items = source_prog->items; // copy
|
|
|
|
|
|
|
|
prog->Validate();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
prog->Validate();
|
|
|
|
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|