From 0b4e911a3e509aca8d70a447f5e8e52b015f96c1 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 14 Feb 2017 15:05:24 +0000 Subject: [PATCH] Fix for signed int promotion --- runtime.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime.c b/runtime.c index 8db4a102..ea1807db 100644 --- a/runtime.c +++ b/runtime.c @@ -2536,8 +2536,8 @@ object FUNC_OP(void *data, common_type *x, object y) { \ int tmpy = obj_obj2int(y); \ mp_int tmp2; \ mp_init(&tmp2); \ - mp_set_int(&tmp2, tmpy); \ - if (y < 0) { tmp2.sign = MP_NEG; } \ + mp_set_int(&tmp2, abs(tmpy)); \ + if (tmpy < 0) { mp_neg(&tmp2, &tmp2); } \ mp_init_copy(&bn_tmp, &(x->bignum_t.bn)); \ BN_OP(&bn_tmp, &tmp2, &(x->bignum_t.bn)); \ } else if (tx == bignum_tag && ty == double_tag) { \