diff options
author | Bhanu Chetlapalli <bhanu@mips.com> | 2012-01-25 14:45:30 -0800 |
---|---|---|
committer | Bhanu Chetlapalli <bhanu@mips.com> | 2012-01-25 14:45:30 -0800 |
commit | 65026f980a6df01a7d437ce51a47de911820041e (patch) | |
tree | ea4b70a8a4fcc4b1f88e83a86136001b620cbc62 /libpixelflinger/fixed.cpp | |
parent | 149ae11fb63818b470156e1652abfad0e08d486d (diff) | |
download | core-65026f980a6df01a7d437ce51a47de911820041e.tar.gz core-65026f980a6df01a7d437ce51a47de911820041e.tar.bz2 core-65026f980a6df01a7d437ce51a47de911820041e.zip |
Prevent bit shifting if num bits is negative
Causes OpenGL Software Renderer to generate incorrect window
coordinates on MIPS & possibly x86
Change-Id: I3c51b6a5a4e6af75e9b31d9d47e4e4d894825888
Signed-off-by: Bhanu Chetlapalli <bhanu@mips.com>
Diffstat (limited to 'libpixelflinger/fixed.cpp')
-rw-r--r-- | libpixelflinger/fixed.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libpixelflinger/fixed.cpp b/libpixelflinger/fixed.cpp index 5b920628b..509453776 100644 --- a/libpixelflinger/fixed.cpp +++ b/libpixelflinger/fixed.cpp @@ -62,7 +62,8 @@ int32_t gglRecipQ(GGLfixed x, int q) int shift; x = gglRecipQNormalized(x, &shift); shift += 16-q; - x += 1L << (shift-1); // rounding + if (shift > 0) + x += 1L << (shift-1); // rounding x >>= shift; return x; } |