summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ground_vehicle.hpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/ground_vehicle.hpp b/src/ground_vehicle.hpp
index 65bcb7653..a4be384a6 100644
--- a/src/ground_vehicle.hpp
+++ b/src/ground_vehicle.hpp
@@ -404,7 +404,12 @@ protected:
tempmax = max(this->cur_speed - (this->cur_speed / 10) - 1, max_speed);
}
- this->cur_speed = spd = Clamp(this->cur_speed + ((int)spd >> 8), min_speed, tempmax);
+ /* Enforce a maximum and minimum speed. Normally we would use something like
+ * Clamp for this, but in this case min_speed might be below the maximum speed
+ * threshold for some reason. That makes acceleration fail and assertions
+ * happen in Clamp. So make it explicit that min_speed overrules the maximum
+ * speed by explicit ordering of min and max. */
+ this->cur_speed = spd = max(min(this->cur_speed + ((int)spd >> 8), tempmax), min_speed);
int scaled_spd = this->GetAdvanceSpeed(spd);