From dee702aaf3c7ff8dd5bcf63d1847ce5c4c79ac19 Mon Sep 17 00:00:00 2001
From: Zack Middleton <zturtleman@gmail.com>
Date: Thu, 20 Jun 2013 21:56:04 -0500
Subject: Fix r_mergeLightmaps 0 crashing OpenGL2 renderer

tr.fatLightmapStep was 0 and caused modulus division by 0.
---
 src/renderergl2/tr_bsp.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

(limited to 'src/renderergl2')

diff --git a/src/renderergl2/tr_bsp.c b/src/renderergl2/tr_bsp.c
index f32c2365..456456fa 100644
--- a/src/renderergl2/tr_bsp.c
+++ b/src/renderergl2/tr_bsp.c
@@ -525,11 +525,13 @@ static float FatPackU(float input, int lightmapnum)
 	if (tr.worldDeluxeMapping)
 		lightmapnum >>= 1;
 
-	lightmapnum %= (tr.fatLightmapStep * tr.fatLightmapStep);
-
 	if(tr.fatLightmapSize > 0)
 	{
-		int             x = lightmapnum % tr.fatLightmapStep;
+		int             x;
+
+		lightmapnum %= (tr.fatLightmapStep * tr.fatLightmapStep);
+
+		x = lightmapnum % tr.fatLightmapStep;
 
 		return (input / ((float)tr.fatLightmapStep)) + ((1.0 / ((float)tr.fatLightmapStep)) * (float)x);
 	}
@@ -545,11 +547,13 @@ static float FatPackV(float input, int lightmapnum)
 	if (tr.worldDeluxeMapping)
 		lightmapnum >>= 1;
 
-	lightmapnum %= (tr.fatLightmapStep * tr.fatLightmapStep);
-
 	if(tr.fatLightmapSize > 0)
 	{
-		int             y = lightmapnum / tr.fatLightmapStep;
+		int             y;
+
+		lightmapnum %= (tr.fatLightmapStep * tr.fatLightmapStep);
+
+		y = lightmapnum / tr.fatLightmapStep;
 
 		return (input / ((float)tr.fatLightmapStep)) + ((1.0 / ((float)tr.fatLightmapStep)) * (float)y);
 	}
-- 
cgit