Tracerestrict: Fix copying an unrestricted signal making an empty program.
This commit is contained in:
@@ -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 *source_prog = GetTraceRestrictProgram(source, false);
|
||||||
|
if (source_prog && !source_prog->items.empty()) {
|
||||||
TraceRestrictProgram *prog = GetTraceRestrictProgram(self, true);
|
TraceRestrictProgram *prog = GetTraceRestrictProgram(self, true);
|
||||||
if (!prog) {
|
if (!prog) {
|
||||||
// allocation failed
|
// allocation failed
|
||||||
return CMD_ERROR;
|
return CMD_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
TraceRestrictProgram *source_prog = GetTraceRestrictProgram(source, false);
|
|
||||||
if (source_prog) {
|
|
||||||
prog->items = source_prog->items; // copy
|
prog->items = source_prog->items; // copy
|
||||||
}
|
|
||||||
prog->Validate();
|
prog->Validate();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user