X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/51b862780c11007371438ed13605ea575a0fd4a7..af974107bce71db98fb962f1ed855f7b4153d3ef:/ec.c diff --git a/ec.c b/ec.c index ca442f3..74bbf5e 100644 --- a/ec.c +++ b/ec.c @@ -333,11 +333,15 @@ static PyObject *epmeth_parse(PyObject *me, PyObject *arg) char *p; qd_parse qd; PyObject *rc = 0; + int paren; ec pp = EC_INIT; if (!PyArg_ParseTuple(arg, "s:parse", &p)) goto end; qd.p = p; qd.e = 0; + qd_skipspc(&qd); paren = qd_delim(&qd, '('); if (!ec_ptparse(&qd, &pp)) VALERR(qd.e); + qd_skipspc(&qd); if (paren && !qd_delim(&qd, ')')) + { EC_DESTROY(&pp); VALERR("missing `)'"); } rc = Py_BuildValue("(Ns)", ecpt_pywrapout(me, &pp), qd.p); end: return (rc); @@ -513,6 +517,7 @@ static int ecptxl_1(ec_curve *c, ec *p, PyObject *x) mp *xx = 0; int n; qd_parse qd; + int paren; Py_XINCREF(x); if (!x || x == Py_None) @@ -522,7 +527,10 @@ static int ecptxl_1(ec_curve *c, ec *p, PyObject *x) goto fix; } else if (TEXT_CHECK(x)) { qd.p = TEXT_PTR(x); qd.e = 0; + qd_skipspc(&qd); paren = qd_delim(&qd, '('); if (!ec_ptparse(&qd, p)) VALERR(qd.e); + qd_skipspc(&qd); if (paren && !qd_delim(&qd, ')')) + { EC_DESTROY(p); VALERR("missing `)'"); } qd_skipspc(&qd); if (!qd_eofp(&qd)) VALERR("junk at eof"); goto fix; } else if (c && (xx = tomp(x)) != 0) { @@ -905,7 +913,7 @@ static int ecmmul_fill(void *pp, PyObject *me, PyObject *x, PyObject *m) return (0); } -static PyObject *ecmmul_exp(PyObject *me, void *pp, int n) +static PyObject *ecmmul_exp(PyObject *me, void *pp, size_t n) { ec p = EC_INIT; ec_immul(ECCURVE_C(me), &p, pp, n); @@ -978,7 +986,7 @@ static PyObject *ecmeth_parse(PyObject *me, PyObject *arg) if (!PyArg_ParseTuple(arg, "s:parse", &p)) goto end; qd.p = p; qd.e = 0; if ((c = ec_curveparse(&qd)) == 0) VALERR(qd.e); - rc = eccurve_pywrap(0, c); + rc = Py_BuildValue("(Ns)", eccurve_pywrap(0, c), qd.p); end: return (rc); }