Changeset 1ca456 in git for Singular/iparith.cc


Ignore:
Timestamp:
Nov 2, 2012, 2:30:28 PM (11 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
665ca84bd3cc340311b38ceff7974b3261b7a24e
Parents:
12777c5748c82636b06dbe5ed71f2459864064c1
Message:
fix: int overflow in interpreter
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/iparith.cc

    r12777c r1ca456  
    869869  int a=(int)(long)u->Data();
    870870  int b=(int)(long)v->Data();
    871   int c=a * b;
    872   if ((b!=0) && (c/b !=a))
     871  int64 c=(int64)a * (int64)b;
     872  if ((c>INT_MAX)||(c<INT_MIN))
    873873    WarnS("int overflow(*), result may be wrong");
    874   res->data = (char *)((long)c);
     874  res->data = (char *)((long)((int)c));
    875875  if ((u->Next()!=NULL) || (v->Next()!=NULL))
    876876    return jjOP_REST(res,u,v);
Note: See TracChangeset for help on using the changeset viewer.