diff --git a/src/pbs.cpp b/src/pbs.cpp index 3e834d4c4b..970b45cbda 100644 --- a/src/pbs.cpp +++ b/src/pbs.cpp @@ -1540,7 +1540,7 @@ void PBSWaitingPositionRestrictedSignalState::TraceRestrictExecuteResEndSlotIntl if (prog->actions_used_flags & actions_used_flags) { TraceRestrictProgramResult out; TraceRestrictProgramInput input(this->tile, this->trackdir, &VehiclePosTraceRestrictPreviousSignalCallback, nullptr); - input.permitted_slot_operations = TRPISP_PBS_RES_END_ACQUIRE | TRPISP_PBS_RES_END_RELEASE; + input.permitted_slot_operations = TRPISP_PBS_RES_END_ACQUIRE; if (tb_entrance_slots) input.permitted_slot_operations = TRPISP_ACQUIRE; prog->Execute(v, input, out); } diff --git a/src/tracerestrict.cpp b/src/tracerestrict.cpp index 70e649c105..5ed9937e4d 100644 --- a/src/tracerestrict.cpp +++ b/src/tracerestrict.cpp @@ -774,7 +774,7 @@ void TraceRestrictProgram::Execute(const Train* v, const TraceRestrictProgramInp break; case TRSCOF_PBS_RES_END_RELEASE: - if (input.permitted_slot_operations & TRPISP_PBS_RES_END_RELEASE) { + if (input.permitted_slot_operations & TRPISP_PBS_RES_END_ACQUIRE) { slot->Vacate(v->index); } else if ((input.permitted_slot_operations & TRPISP_PBS_RES_END_ACQ_DRY) && (this->actions_used_flags & TRPAUF_PBS_RES_END_SIMULATE)) { slot->VacateUsingTemporaryState(v->index, &pbs_res_end_acq_dry_slot_temporary_state); diff --git a/src/tracerestrict.h b/src/tracerestrict.h index 676262ca5d..077478b4f6 100644 --- a/src/tracerestrict.h +++ b/src/tracerestrict.h @@ -486,11 +486,10 @@ enum TraceRestrictProgramInputSlotPermissions : uint8_t { TRPISP_ACQUIRE = 1 << 0, ///< Slot acquire is permitted TRPISP_RELEASE_BACK = 1 << 1, ///< Slot release (back) is permitted TRPISP_RELEASE_FRONT = 1 << 2, ///< Slot release (front) is permitted - TRPISP_PBS_RES_END_ACQUIRE = 1 << 3, ///< Slot acquire (PBS reservations ending at this signal) is permitted - TRPISP_PBS_RES_END_ACQ_DRY = 1 << 4, ///< Dry-run slot acquire (PBS reservations ending at this signal) is permitted - TRPISP_PBS_RES_END_RELEASE = 1 << 5, ///< Slot release (PBS reservations ending at this signal) is permitted + TRPISP_PBS_RES_END_ACQUIRE = 1 << 3, ///< Slot acquire/release (PBS reservations ending at this signal) is permitted + TRPISP_PBS_RES_END_ACQ_DRY = 1 << 4, ///< Dry-run slot acquire/release (PBS reservations ending at this signal) is permitted + TRPISP_ACQUIRE_TEMP_STATE = 1 << 5, ///< Slot acquire/release is permitted, using temporary state, TraceRestrictProgramInput::slot_temporary_state must be set TRPISP_CHANGE_COUNTER = 1 << 6, ///< Change counter value is permitted - TRPISP_ACQUIRE_TEMP_STATE = 1 << 7, ///< Slot acquire is permitted, using temporary state, TraceRestrictProgramInput::slot_temporary_state must be set }; DECLARE_ENUM_AS_BIT_SET(TraceRestrictProgramInputSlotPermissions)