summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Fonseca <jrfonseca@tungstengraphics.com>2008-08-07 09:13:11 +0100
committerJosé Fonseca <jrfonseca@tungstengraphics.com>2008-08-12 13:00:20 +0100
commit80d3a653f0172f01be694a29456c70f1f4da1812 (patch)
tree28cde4da56fe3ab73f2f3f599cafb40a0361e25c
parent3b5ee3d6de2c08faf69c701bf05d8f33ccd01502 (diff)
tgsi: Prevent division by zero.
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_exec.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c
index 8b430548bca..b93f3d5222a 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
@@ -393,10 +393,18 @@ micro_div(
const union tgsi_exec_channel *src0,
const union tgsi_exec_channel *src1 )
{
- dst->f[0] = src0->f[0] / src1->f[0];
- dst->f[1] = src0->f[1] / src1->f[1];
- dst->f[2] = src0->f[2] / src1->f[2];
- dst->f[3] = src0->f[3] / src1->f[3];
+ if (src1->f[0] != 0) {
+ dst->f[0] = src0->f[0] / src1->f[0];
+ }
+ if (src1->f[1] != 0) {
+ dst->f[1] = src0->f[1] / src1->f[1];
+ }
+ if (src1->f[2] != 0) {
+ dst->f[2] = src0->f[2] / src1->f[2];
+ }
+ if (src1->f[3] != 0) {
+ dst->f[3] = src0->f[3] / src1->f[3];
+ }
}
static void