if (!u) {
g->d.u = 0;
u = Py_None;
- } else if ((g->d.u = getmp(u)) == 0)
- goto end;
+ } else {
+ if ((g->d.u = getmp(u)) == 0)
+ goto end;
+ if (MP_PYCHECK(u)) Py_INCREF(u);
+ else u = mp_pywrap(g->d.u);
+ }
if (!p) {
assert(g->d.u); assert(calcpub);
pp = G_CREATE(GROUP_G(G));
g->d.p = GE_X(p);
g->d.r = GRAND_R(rng);
g->d.h = GCHASH_CH(hash);
- g->G = G; Py_INCREF(G); g->u = u; Py_INCREF(u); g->p = p;
+ g->G = G; Py_INCREF(G); g->u = u; g->p = p;
g->rng = rng; Py_INCREF(rng); g->hash = hash; Py_INCREF(hash);
return ((PyObject *)g);
end:
{
PyObject *G, *u, *p = 0, *rng = rand_pyobj, *hash = has160_pyobj;
PyObject *rc = 0;
- char *kwlist[] = { "G", "p", "u", "hash", "rng", 0 };
+ char *kwlist[] = { "G", "u", "p", "hash", "rng", 0 };
if (!PyArg_ParseTupleAndKeywords(arg, kw, "O!O|O!O!O!:new", kwlist,
group_pytype, &G,