From 1a2ed9419f523b94a0c94f2317c95b90e282c131 Mon Sep 17 00:00:00 2001
From: Romain BERNARD <romain.bernard@uca.fr>
Date: Wed, 19 Jun 2024 18:18:41 +0200
Subject: [PATCH] fix weight update (use of mixed reference/pointer caused
 unexpected affectations)

---
 src/routes/vehicle/SAEVRoute.cpp | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/routes/vehicle/SAEVRoute.cpp b/src/routes/vehicle/SAEVRoute.cpp
index 9b6a764..a447646 100644
--- a/src/routes/vehicle/SAEVRoute.cpp
+++ b/src/routes/vehicle/SAEVRoute.cpp
@@ -399,24 +399,24 @@ BestInsertionQueue SAEVRoute::getBestInsertionsQueue(size_t requestId, size_t ve
 }
 
 void SAEVRoute::addRequestWeightToRoute(size_t requestId) {
-    SAEVKeyPoint& currentKP = getOrigin(requestId);
-    int requestWeight = currentKP.getRequest()->getWeight();
-    currentKP.setCurrentOccupation(currentKP.getPredecessor()->getCurrentOccupation() + requestWeight); //O.Weight = Prec(O).Weight + R.Weight (request enters the vehicle=)
+    SAEVKeyPoint* currentKP = &getOrigin(requestId);
+    int requestWeight = currentKP->getRequest()->getWeight();
+    currentKP->setCurrentOccupation(currentKP->getPredecessor()->getCurrentOccupation() + requestWeight); //O.Weight = Prec(O).Weight + R.Weight (request enters the vehicle=)
     do {
-        currentKP = *currentKP.getSuccessor();
-        currentKP.setCurrentOccupation(currentKP.getCurrentOccupation() + requestWeight);
-    } while (currentKP != getDestination(requestId));
-    currentKP.setCurrentOccupation(currentKP.getPredecessor()->getCurrentOccupation() - requestWeight); //D.Weight = Prec(D).Weight - R.Weight (request leaves the vehicle)
+        currentKP = currentKP->getSuccessor();
+        currentKP->setCurrentOccupation(currentKP->getCurrentOccupation() + requestWeight);
+    } while (currentKP != &getDestination(requestId));
+    currentKP->setCurrentOccupation(currentKP->getPredecessor()->getCurrentOccupation() - requestWeight); //D.Weight = Prec(D).Weight - R.Weight (request leaves the vehicle)
 }
 
 void SAEVRoute::removeRequestWeightFromRoute(size_t requestId) {
-    SAEVKeyPoint& currentKP = getOrigin(requestId);
-    int requestWeight = currentKP.getRequest()->getWeight();
-    currentKP.setCurrentOccupation(0); //reset request weight on origin KP
+    SAEVKeyPoint* currentKP = &getOrigin(requestId);
+    int requestWeight = currentKP->getRequest()->getWeight();
+    currentKP->setCurrentOccupation(0); //reset request weight on origin KP
     do {
-        currentKP = *currentKP.getSuccessor();
-        currentKP.setCurrentOccupation(currentKP.getCurrentOccupation() - requestWeight);
-    } while (currentKP != getDestination(requestId));
-    currentKP.setCurrentOccupation(0); //reset request weight on destination KP
+        currentKP = currentKP->getSuccessor();
+        currentKP->setCurrentOccupation(currentKP->getCurrentOccupation() - requestWeight);
+    } while (currentKP != &getDestination(requestId));
+    currentKP->setCurrentOccupation(0); //reset request weight on destination KP
 }
 
-- 
GitLab