fix infinite recursion in divmoddi4 / mulodi4

on ARMv7-M processors, divmoddi4 was calling mulodi4 and mulodi4 was calling
divmoddi4 leading to infinite recursion. This commit breaks the cycle by using
wrapping multiplication in divmoddi4.

fixes #145
This commit is contained in:
Jorge Aparicio 2017-03-06 10:34:27 -05:00
parent 0507842b24
commit 644a1c9ac9

View File

@ -55,7 +55,9 @@ macro_rules! divmod {
#[cfg(all(feature = "c", any(target_arch = "x86")))] #[cfg(all(feature = "c", any(target_arch = "x86")))]
() => unsafe { $div(a, b) }, () => unsafe { $div(a, b) },
}; };
*rem = a - (r * b); // NOTE won't overflow because it's using the result from the
// previous division
*rem = a - r.wrapping_mul(b);
r r
} }
} }