From 599cc92bfd99277ea05b9e0561f6e513bfc532a4 Mon Sep 17 00:00:00 2001 From: Clemens Hofreither Date: Thu, 28 May 2026 20:01:38 +0200 Subject: [PATCH] fix undefined behavior from signed int overflow --- PureDOOM.h | 4 +++- src/DOOM/r_segs.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/PureDOOM.h b/PureDOOM.h index 29547152..7fb694e3 100644 --- a/PureDOOM.h +++ b/PureDOOM.h @@ -39655,7 +39655,9 @@ void R_StoreWallRange(int start, int stop) // calculate rw_distance for scale calculation rw_normalangle = curline->angle + ANG90; - offsetangle = (angle_t)doom_abs((int)rw_normalangle - (int)rw_angle1); + offsetangle = rw_normalangle - rw_angle1; + if (offsetangle > ANG180) + offsetangle = -offsetangle; // offsetangle = abs(rw_normalangle - rw_angle1) if (offsetangle > ANG90) offsetangle = ANG90; diff --git a/src/DOOM/r_segs.c b/src/DOOM/r_segs.c index 73686d5a..c61872eb 100644 --- a/src/DOOM/r_segs.c +++ b/src/DOOM/r_segs.c @@ -384,7 +384,9 @@ void R_StoreWallRange(int start, int stop) // calculate rw_distance for scale calculation rw_normalangle = curline->angle + ANG90; - offsetangle = (angle_t)doom_abs((int)rw_normalangle - (int)rw_angle1); + offsetangle = rw_normalangle - rw_angle1; + if (offsetangle > ANG180) + offsetangle = -offsetangle; // offsetangle = abs(rw_normalangle - rw_angle1) if (offsetangle > ANG90) offsetangle = ANG90;