softpipe: Fix division by zero
authorArpad Borsos <arpad.borsos@googlemail.com>
Wed, 14 Apr 2010 20:26:32 +0000 (14:26 -0600)
committerBrian Paul <brianp@vmware.com>
Wed, 14 Apr 2010 20:26:37 +0000 (14:26 -0600)
This can be triggered by running the cairo tests using the gl backend
and softpipe.

Signed-off-by: Brian Paul <brianp@vmware.com>
src/gallium/drivers/softpipe/sp_setup.c

index 85966bc5e4902d8b00782ee184162d7ee21e9890..e64aee6d824d65da6efee19a4c9f483878e02e08 100644 (file)
@@ -669,17 +669,17 @@ static void setup_tri_edges( struct setup_context *setup )
 
    setup->emaj.sy = ceilf(vmin_y);
    setup->emaj.lines = (int) ceilf(vmax_y - setup->emaj.sy);
-   setup->emaj.dxdy = setup->emaj.dx / setup->emaj.dy;
+   setup->emaj.dxdy = setup->emaj.dy ? setup->emaj.dx / setup->emaj.dy : .0f;
    setup->emaj.sx = vmin_x + (setup->emaj.sy - vmin_y) * setup->emaj.dxdy;
 
    setup->etop.sy = ceilf(vmid_y);
    setup->etop.lines = (int) ceilf(vmax_y - setup->etop.sy);
-   setup->etop.dxdy = setup->etop.dx / setup->etop.dy;
+   setup->etop.dxdy = setup->etop.dy ? setup->etop.dx / setup->etop.dy : .0f;
    setup->etop.sx = vmid_x + (setup->etop.sy - vmid_y) * setup->etop.dxdy;
 
    setup->ebot.sy = ceilf(vmin_y);
    setup->ebot.lines = (int) ceilf(vmid_y - setup->ebot.sy);
-   setup->ebot.dxdy = setup->ebot.dx / setup->ebot.dy;
+   setup->ebot.dxdy = setup->ebot.dy ? setup->ebot.dx / setup->ebot.dy : .0f;
    setup->ebot.sx = vmin_x + (setup->ebot.sy - vmin_y) * setup->ebot.dxdy;
 }