From 0c6c0003b132d4f455f3964faad0648434030535 Mon Sep 17 00:00:00 2001 From: mittorn Date: Mon, 1 Apr 2019 02:42:13 +0700 Subject: [PATCH] ref_soft: Bound texcoords again, disable drawing spans on FloorDivMod overflow --- r_polyse.c | 11 ++++++++++- r_triapi.c | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/r_polyse.c b/r_polyse.c index 3f9fddce..abededfa 100644 --- a/r_polyse.c +++ b/r_polyse.c @@ -105,6 +105,11 @@ byte *skinstart; void (*d_pdrawspans)(spanpackage_t *pspanpackage); +void R_PolysetStub (spanpackage_t *pspanpackage) +{ + +} + void R_PolysetDrawSpans8_33 (spanpackage_t *pspanpackage); void R_PolysetDrawSpans8_66 (spanpackage_t *pspanpackage); void R_PolysetDrawSpans8_Opaque (spanpackage_t *pspanpackage); @@ -308,12 +313,16 @@ void FloorDivMod (float numer, float denom, int *quotient, } if( q > INT_MAX / 2 || q < INT_MIN / 2 ) { - gEngfuncs.Con_Printf( S_ERROR"FloorDivMod: q overflow!\n" ); + int i; + d_pdrawspans = R_PolysetStub; + gEngfuncs.Con_Printf( S_ERROR "FloorDivMod: q overflow!\n" ); q = 1; } if( r > INT_MAX / 2 || r < INT_MIN / 2 ) { + int i; + d_pdrawspans = R_PolysetStub; gEngfuncs.Con_Printf( S_ERROR "FloorDivMod: r overflow!\n"); r = 1; } diff --git a/r_triapi.c b/r_triapi.c index 6b26752a..8b61b38b 100644 --- a/r_triapi.c +++ b/r_triapi.c @@ -245,8 +245,8 @@ void TriTexCoord2f( volatile float u, volatile float v ) v1 = v1 - 1; - s = r_affinetridesc.skinwidth * bound(0,u1,1); - t = r_affinetridesc.skinheight * bound(0,v1,1); + s = r_affinetridesc.skinwidth * bound(0.01,u1,0.99); + t = r_affinetridesc.skinheight * bound(0.01,v1,0.99); } /*