diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Choose.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Choose.java index 98118afde7a5da883ee86ddb170b5be852cbb7bb..66726c7678351a469d267fd533cf31613b1421be 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Choose.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Choose.java @@ -32,6 +32,7 @@ import com.oracle.truffle.r.runtime.RBuiltinKind; import com.oracle.truffle.r.runtime.RError; import com.oracle.truffle.r.runtime.RError.Message; import com.oracle.truffle.r.runtime.RRuntime; +import com.oracle.truffle.r.runtime.Utils; import com.oracle.truffle.r.runtime.data.RDataFactory; import com.oracle.truffle.r.runtime.data.model.RAbstractDoubleVector; import com.oracle.truffle.r.runtime.data.model.RAbstractIntVector; @@ -91,8 +92,8 @@ public abstract class Choose extends RBuiltinNode { for (int i = 0, nIdx = 0, kIdx = 0; i < resultLen; i++) { result[i] = choose(getN.applyAsDouble(nIdx), getK.applyAsInt(kIdx)); complete &= result[i] != RRuntime.DOUBLE_NA; - nIdx = (nIdx + 1) % nLength; - kIdx = (kIdx + 1) % kLength; + nIdx = Utils.incMod(nIdx, nLength); + kIdx = Utils.incMod(kIdx, kLength); } return RDataFactory.createDoubleVector(result, complete); }