Mercurial > hg > openttd
changeset 6617:bfd51a1acb47 draft
(svn r9837) -Fix: [NewGRF] Catch occurance of division-by-zero in varaction handling.
author | peter1138 <peter1138@openttd.org> |
---|---|
date | Mon, 14 May 2007 17:37:34 +0000 |
parents | ce5601a32593 |
children | a0ebb1506656 |
files | src/newgrf_spritegroup.cpp |
diffstat | 1 files changed, 4 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -129,10 +129,10 @@ case DSGA_OP_SMAX: return max((S)last_value, (S)value); case DSGA_OP_UMIN: return min((U)last_value, (U)value); case DSGA_OP_UMAX: return max((U)last_value, (U)value); - case DSGA_OP_SDIV: return (S)last_value / (S)value; - case DSGA_OP_SMOD: return (S)last_value % (S)value; - case DSGA_OP_UDIV: return (U)last_value / (U)value; - case DSGA_OP_UMOD: return (U)last_value % (U)value; + case DSGA_OP_SDIV: return value == 0 ? (S)last_value : (S)last_value / (S)value; + case DSGA_OP_SMOD: return value == 0 ? (S)last_value : (S)last_value % (S)value; + case DSGA_OP_UDIV: return value == 0 ? (U)last_value : (U)last_value / (U)value; + case DSGA_OP_UMOD: return value == 0 ? (U)last_value : (U)last_value % (U)value; case DSGA_OP_MUL: return last_value * value; case DSGA_OP_AND: return last_value & value; case DSGA_OP_OR: return last_value | value;