瀏覽代碼

fix debug assertion in modsi3 / moddi3

fixes #151
this fix is very similar to #149
Jorge Aparicio 8 年之前
父節點
當前提交
2faec6a4fb
共有 1 個文件被更改,包括 3 次插入2 次删除
  1. 3 2
      src/int/sdiv.rs

+ 3 - 2
src/int/sdiv.rs

@@ -33,9 +33,10 @@ macro_rules! mod_ {
         #[cfg_attr(not(test), no_mangle)]
         pub extern "C" fn $intrinsic(a: $ty, b: $ty) -> $tyret {
             let s = b >> (<$ty>::bits() - 1);
-            let b = (b ^ s) - s;
+            // NOTE(wrapping_sub) see comment in the `div` macro
+            let b = (b ^ s).wrapping_sub(s);
             let s = a >> (<$ty>::bits() - 1);
-            let a = (a ^ s) - s;
+            let a = (a ^ s).wrapping_sub(s);
 
             let r = urem!(a as $uty, b as $uty);
             ($conv)((r as $ty ^ s) - s)