ref: dbdd5beac294bfe2620c7b616c297df729ebe83f
parent: 96e47f3339ad94f4c15857e7dab7d6efa811eb4b
parent: 05b393913c15853381db5ca9f4dec905d9455d95
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Feb 4 21:50:11 EST 2017
merge
--- a/sys/src/libmp/port/mpmod.c
+++ b/sys/src/libmp/port/mpmod.c
@@ -6,11 +6,15 @@
mpmod(mpint *x, mpint *n, mpint *r)
{int sign;
+ mpint *ns;
sign = x->sign;
+ ns = sign < 0 && n == r ? mpcopy(n) : n;
if((n->flags & MPfield) == 0
|| ((Mfield*)n)->reduce((Mfield*)n, x, r) != 0)
mpdiv(x, n, nil, r);
- if(sign < 0)
- mpmagsub(n, r, r);
+ if(sign < 0){+ mpmagsub(ns, r, r);
+ if(ns != n) mpfree(ns);
+ }
}
--
⑨