diff options
author | Zou Nan hai <nanhai.zou@intel.com> | 2007-02-12 12:16:49 +0800 |
---|---|---|
committer | Zou Nan hai <nanhai.zou@intel.com> | 2007-02-12 12:16:49 +0800 |
commit | ebcc9b5d12995cc83c032beeff468c5ecb30b33f (patch) | |
tree | 6f2585374a0cf1055c7d361a3ef0b5369237a47f /src/mesa/main/light.h | |
parent | ee5417bca883d82d618e1c0b65011940253555dd (diff) | |
download | external_mesa3d-ebcc9b5d12995cc83c032beeff468c5ecb30b33f.zip external_mesa3d-ebcc9b5d12995cc83c032beeff468c5ecb30b33f.tar.gz external_mesa3d-ebcc9b5d12995cc83c032beeff468c5ecb30b33f.tar.bz2 |
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.
Diffstat (limited to 'src/mesa/main/light.h')
-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 f47fe58..b97e17b 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]); \ |