Rob Shearman : widl: Issue an error instead of crashing for dividing by zero in a constant expression .

Alexandre Julliard julliard at winehq.org
Mon Apr 21 07:46:18 CDT 2008


Module: wine
Branch: master
Commit: efd10742ec02ec14fe080f8b69244ecbae920798
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=efd10742ec02ec14fe080f8b69244ecbae920798

Author: Rob Shearman <rob at codeweavers.com>
Date:   Sun Apr 20 22:15:36 2008 +0100

widl: Issue an error instead of crashing for dividing by zero in a constant expression.

---

 tools/widl/parser.y |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index 6f5dbdd..c7fbe42 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -1237,7 +1237,11 @@ static expr_t *make_expr2(enum expr_type type, expr_t *expr1, expr_t *expr2)
       e->cval = expr1->cval * expr2->cval;
       break;
     case EXPR_DIV:
-      e->cval = expr1->cval / expr2->cval;
+      if (expr2->cval == 0) {
+        error_loc("divide by zero in expression\n");
+        e->cval = 0;
+      } else
+        e->cval = expr1->cval / expr2->cval;
       break;
     case EXPR_OR:
       e->cval = expr1->cval | expr2->cval;




More information about the wine-cvs mailing list