~mdw
/
catacomb-python
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rand.c: Implement the `passes' property of the `DSARand' generator.
[catacomb-python]
/
mp.c
diff --git
a/mp.c
b/mp.c
index
59fce83
..
456c905
100644
(file)
--- a/
mp.c
+++ b/
mp.c
@@
-122,6
+122,12
@@
mp *mp_frompyobject(PyObject *o, int radix)
mp *x;
size_t sz;
TEXT_PTRLEN(o, sc.buf, sz); sc.lim = sc.buf + sz;
mp *x;
size_t sz;
TEXT_PTRLEN(o, sc.buf, sz); sc.lim = sc.buf + sz;
+ if (sc.buf + 2 < sc.lim && sc.buf[0] == '0' &&
+ (radix == 16 ? (sc.buf[1] == 'x' || sc.buf[1] == 'X') :
+ radix == 8 ? (sc.buf[1] == 'o' || sc.buf[1] == 'O') :
+ radix == 2 ? (sc.buf[1] == 'b' || sc.buf[1] == 'B') :
+ 0))
+ sc.buf += 2;
x = mp_read(MP_NEW, radix, &mptext_stringops, &sc);
if (!x) return (0);
if (sc.buf < sc.lim) { MP_DROP(x); return (0); }
x = mp_read(MP_NEW, radix, &mptext_stringops, &sc);
if (!x) return (0);
if (sc.buf < sc.lim) { MP_DROP(x); return (0); }
@@
-196,7
+202,7
@@
end:
return (rc);
}
return (rc);
}
-/*-----
Python interface ------------
--------------------------------------*/
+/*-----
Arbitrary-precision integers
--------------------------------------*/
static void mp_pydealloc(PyObject *o)
{
static void mp_pydealloc(PyObject *o)
{
@@
-1799,9
+1805,7
@@
static PyObject *mcmeth_solve(PyObject *me, PyObject *arg)
z = mp_pywrap(mpcrt_solve(c, MP_NEW, v));
end:
if (v) {
z = mp_pywrap(mpcrt_solve(c, MP_NEW, v));
end:
if (v) {
- n = i;
- for (i = 0; i < n; i++)
- MP_DROP(v[i]);
+ while (i--) MP_DROP(v[i]);
xfree(v);
}
return (z);
xfree(v);
}
return (z);
@@
-1854,9
+1858,7
@@
static PyObject *mpcrt_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
end:
if (v) {
end:
if (v) {
- n = i;
- for (i = 0; i < n; i++)
- MP_DROP(v[i].m);
+ while (i--) MP_DROP(v[i].m);
xfree(v);
}
mp_drop(xx); mp_drop(y); mp_drop(g);
xfree(v);
}
mp_drop(xx); mp_drop(y); mp_drop(g);