From 5640aa955ab079aed717a56290e7488604da5a84 Mon Sep 17 00:00:00 2001 From: toaster Date: Sat, 7 Sep 2019 12:07:29 +0100 Subject: [PATCH] Fix the V_DrawCroppedPatch bleeding on the current charsel screen. --- src/v_video.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/v_video.c b/src/v_video.c index 2ec06a787..edea7e051 100644 --- a/src/v_video.c +++ b/src/v_video.c @@ -1045,9 +1045,15 @@ void V_DrawCroppedPatch(fixed_t x, fixed_t y, fixed_t pscale, INT32 scrn, patch_ prevdelta = topdelta; source = (const UINT8 *)(column) + 3; dest = desttop; - dest += FixedInt(FixedMul(topdelta< 0) + { + dest += FixedInt(FixedMul((topdelta-sy)<>FRACBITS) < column->length && (((ofs>>FRACBITS) - sy) + topdelta) < h; ofs += rowfrac) + for (; dest < deststop && (ofs>>FRACBITS) < column->length && (((ofs>>FRACBITS) - sy) + topdelta) < h; ofs += rowfrac) { if (dest >= screens[scrn&V_PARAMMASK]) // don't draw off the top of the screen (CRASH PREVENTION) *dest = patchdrawfunc(dest, source, ofs);