ec.c: Don't lose error status when constructing points from a sequence.
[catacomb-python] / ec.c
diff --git a/ec.c b/ec.c
index 6280010..361bbf5 100644 (file)
--- a/ec.c
+++ b/ec.c
@@ -473,6 +473,7 @@ static int ecptxl_1(ec_curve *c, ec *p, PyObject *x)
        (n == 3 && (z = PySequence_GetItem(t, 2)) == 0))
       goto end;
     rc = (n == 2) ? ecptxl_2(c, p, x, y) : ecptxl_3(c, p, x, y, z);
+    goto end;
   } else
     TYERR("can't convert to curve point");
   goto ok;
@@ -508,7 +509,7 @@ static PyObject *ecptnc_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
     goto end;
   return (ecpt_pywrapout(ty, &p));
 end:
-  EC_DESTROY(&p);
+  mp_drop(p.x); mp_drop(p.y); mp_drop(p.z);
   return (0);
 }
 
@@ -550,7 +551,7 @@ static PyObject *ecpt_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
     goto end;
   return (ecpt_pywrap((PyObject *)ty, &p));
 end:
-  EC_DESTROY(&p);
+  mp_drop(p.x); mp_drop(p.y); mp_drop(p.z);
   return (0);
 }