static PyObject *kfmeth_qtag(PyObject *me, PyObject *arg, PyObject *kw)
{
key *k;
- key_data **kd;
+ key_data **kd, *okd;
PyObject *newkdobj = 0;
char *tag;
- PyObject *kdobj;
dstr d = DSTR_INIT;
PyObject *rc = 0;
static char *kwlist[] = { "tag", "new", 0 };
goto end;
if (key_qtag(KEYFILE_KF(me), tag, &d, &k, &kd))
KEYERR(KERR_NOTFOUND);
- key_incref(*kd);
- kdobj = keydata_pywrap(*kd);
+ okd = *kd;
if (newkdobj) {
if (!(KEYFILE_KF(me)->f & KF_WRITE))
KEYERR(KERR_READONLY);
- key_drop(*kd);
+ KEYFILE_KF(me)->f |= KF_MODIFIED;
*kd = KEYDATA_KD(newkdobj);
- key_incref(*kd);
}
- rc = Py_BuildValue("(s#NN)", d.buf, d.len, key_pywrap(me, k), kdobj);
+ key_incref(*kd);
+ rc = Py_BuildValue("(s#NN)",
+ d.buf, d.len,
+ key_pywrap(me, k),
+ keydata_pywrap(okd));
end:
return (rc);
}