From ebcc9b5d12995cc83c032beeff468c5ecb30b33f Mon Sep 17 00:00:00 2001 From: Zou Nan hai Date: Mon, 12 Feb 2007 12:16:49 +0800 Subject: fd.o #BZ 9684 gcc may cast an overflowed float value to an negative int value on i386, fix it to make sure at least some apps will not crash if it contains wrong normal data. --- src/mesa/main/light.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/mesa/main/light.h') diff --git a/src/mesa/main/light.h b/src/mesa/main/light.h index f47fe58a83..b97e17b5be 100644 --- a/src/mesa/main/light.h +++ b/src/mesa/main/light.h @@ -92,7 +92,8 @@ do { \ struct gl_shine_tab *_tab = table; \ float f = (dp * (SHINE_TABLE_SIZE-1)); \ int k = (int) f; \ - if (k > SHINE_TABLE_SIZE-2) \ + if (k < 0 /* gcc may cast an overflow float value to negative int value*/ \ + || k > SHINE_TABLE_SIZE-2) \ result = (GLfloat) _mesa_pow( dp, _tab->shininess ); \ else \ result = _tab->tab[k] + (f-k)*(_tab->tab[k+1]-_tab->tab[k]); \ -- cgit v1.2.3