From ae5cafdbfe349f25afdc289ab79a6b32d47f2213 Mon Sep 17 00:00:00 2001 From: mdw Date: Tue, 27 Sep 2005 11:27:14 +0000 Subject: [PATCH] key_qtag fixing. --- key.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/key.c b/key.c index 9de143e..38d3024 100644 --- a/key.c +++ b/key.c @@ -1894,10 +1894,9 @@ end: 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 }; @@ -1907,16 +1906,18 @@ static PyObject *kfmeth_qtag(PyObject *me, PyObject *arg, PyObject *kw) 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); } -- 2.11.0