From e85c91c3d8ec3e159db655b1d3531af6801dbf61 Mon Sep 17 00:00:00 2001 From: Eidolon Date: Mon, 3 Mar 2025 18:34:24 -0600 Subject: [PATCH] Fix write Y range for splat drawing Fixes a silent memory error during splat drawing when splats cross the bottom of the screen. --- src/r_splats.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/r_splats.c b/src/r_splats.c index fa8e2b64c..e2d39fe99 100644 --- a/src/r_splats.c +++ b/src/r_splats.c @@ -53,7 +53,7 @@ static void rasterize_segment_tex(INT32 x1, INT32 y1, INT32 x2, INT32 y2, INT32 if (dir == 0) { - for (;;) + for (; count > 0; count--) { rastertab[y1].maxx = xs; rastertab[y1].tx2 = xe; @@ -62,13 +62,11 @@ static void rasterize_segment_tex(INT32 x1, INT32 y1, INT32 x2, INT32 y2, INT32 xs += dx0; xe += dx1; y1++; - - if (count-- < 1) break; } } else { - for (;;) + for (; count > 0; count--) { rastertab[y1].maxx = xs; rastertab[y1].tx2 = tc; @@ -77,8 +75,6 @@ static void rasterize_segment_tex(INT32 x1, INT32 y1, INT32 x2, INT32 y2, INT32 xs += dx0; xe += dx1; y1++; - - if (count-- < 1) break; } } } @@ -95,7 +91,7 @@ static void rasterize_segment_tex(INT32 x1, INT32 y1, INT32 x2, INT32 y2, INT32 if (dir == 0) { - for (;;) + for (; count > 0; count--) { rastertab[y2].minx = xs; rastertab[y2].tx1 = xe; @@ -104,13 +100,11 @@ static void rasterize_segment_tex(INT32 x1, INT32 y1, INT32 x2, INT32 y2, INT32 xs += dx0; xe += dx1; y2++; - - if (count-- < 1) break; } } else { - for (;;) + for (; count > 0; count--) { rastertab[y2].minx = xs; rastertab[y2].tx1 = tc; @@ -119,8 +113,6 @@ static void rasterize_segment_tex(INT32 x1, INT32 y1, INT32 x2, INT32 y2, INT32 xs += dx0; xe += dx1; y2++; - - if (count-- < 1) break; } } }