summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/main/light.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mesa/main/light.h b/src/mesa/main/light.h
index f47fe58a839..b97e17b5be4 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]); \