diff options
-rw-r--r-- | src/jvm/clojure/lang/Numbers.java | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/jvm/clojure/lang/Numbers.java b/src/jvm/clojure/lang/Numbers.java index d67a4aa1..cf7f4042 100644 --- a/src/jvm/clojure/lang/Numbers.java +++ b/src/jvm/clojure/lang/Numbers.java @@ -1734,7 +1734,7 @@ static public int xor(int x, int y){ static public int minus(int x, int y){ int ret = x - y; - if (((ret ^ x) < 0 && (ret ^ -y) < 0) || (y == Integer.MIN_VALUE)) + if (((ret ^ x) < 0 && (ret ^ ~y) < 0)) return throwIntOverflow(); return ret; } @@ -1841,13 +1841,13 @@ static public long add(long x, long y){ static public long minus(long x, long y){ long ret = x - y; - if (((ret ^ x) < 0 && (ret ^ -y) < 0) || (y == Long.MIN_VALUE)) + if (((ret ^ x) < 0 && (ret ^ ~y) < 0)) return throwIntOverflow(); return ret; } static public long minus(long x){ - if(x == Integer.MIN_VALUE) + if(x == Long.MIN_VALUE) return throwIntOverflow(); return -x; } |