chiark / gitweb /
key_qtag fixing.
authormdw <mdw>
Tue, 27 Sep 2005 11:27:14 +0000 (11:27 +0000)
committermdw <mdw>
Tue, 27 Sep 2005 11:27:14 +0000 (11:27 +0000)
key.c

diff --git a/key.c b/key.c
index 9de143ec190fb9a4c338ec88f20d0f41c7f50ba0..38d3024aa9b214cba6c9e3d056837d543656c9ee 100644 (file)
--- 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);
 }