diff options
-rw-r--r-- | src/mesa/main/light.h | 3 |
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]); \ |