Infinite loop in ScaledNumber when calling toInt


I’m tracking down an infinite recursion problem when calling toInt. The problem seems to be that in the call to toInt, we call compareTo which, in turn, calls toInt in one of its paths. This does not happens on 64bit Scaled numbers. I’m trying to work out a fix, but maybe you’ll spot the problem quicker.

Here’s a unittest that triggers the problem. I ran into it with another patch I’m working on that needs to multiply scaled32 numbers that are often 1. In tracing this, I’m thinking that we could probably add some short-circuits to avoid so many calls when dealing with trivial numbers (but that’s unrelated).

Thanks. Diego.

00.diff (518 Bytes)

I was over-thinking this =/. The attached patch removes the
(accidental) co-recursion by gutting the logic in `compareTo()`.
Feel free to commit with your test, or I can.

simplify-compare-to.patch (812 Bytes)

Thanks! Committed at r236326.