From 8068407d2a94cc398c7b0210a6ad0b613e5a2cfc Mon Sep 17 00:00:00 2001 From: Lucas Date: Thu, 11 Jul 2024 11:17:28 +0200 Subject: [PATCH] Fixed bug with negative offsets --- src/inet/queueing/gate/PeriodicGate.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/inet/queueing/gate/PeriodicGate.cc b/src/inet/queueing/gate/PeriodicGate.cc index 2e6e343cb74..a17175af1e1 100644 --- a/src/inet/queueing/gate/PeriodicGate.cc +++ b/src/inet/queueing/gate/PeriodicGate.cc @@ -96,7 +96,11 @@ void PeriodicGate::initializeGating() { index = 0; isOpen_ = initiallyOpen; - offset.setRaw(totalDuration != 0 ? initialOffset.raw() % totalDuration.raw() : 0); + if (totalDuration.raw() == 0) { + offset.setRaw(0); + } else { + offset.setRaw((initialOffset.raw() % totalDuration.raw() + totalDuration.raw()) % totalDuration.raw()); + } while (offset > CLOCKTIME_ZERO) { clocktime_t duration = durations[index]; if (offset >= duration) {