*.c: Use `Py_XDECREF' where applicable.
[pyke] / util.c
diff --git a/util.c b/util.c
index 9332c8b..aa75ea7 100644 (file)
--- a/util.c
+++ b/util.c
@@ -68,8 +68,8 @@ PyObject *getk64(kludge64 u)
   Py_DECREF(i); i = t;
   if ((rc = PyNumber_Int(i)) == 0) goto end;
 end:
-  if (i) Py_DECREF(i);
-  if (j) Py_DECREF(j);
+  Py_XDECREF(i);
+  Py_XDECREF(j);
   return (rc);
 #endif
 }
@@ -185,7 +185,7 @@ int convk64(PyObject *o, void *pp)
   rc = 1;
 
 end:
-  if (i) Py_DECREF(i);
+  Py_XDECREF(i);
   return (rc);
 }
 
@@ -324,13 +324,7 @@ PyObject *mkexc(PyObject *mod, PyObject *base,
   PyObject *func = 0;
   PyObject *meth = 0;
 
-  if ((nameobj = PyString_FromFormat("%s.%s",
-                                    PyModule_GetName(mod),
-                                    name)) == 0 ||
-      (dict = PyDict_New()) == 0 ||
-      (exc = PyErr_NewException(PyString_AS_STRING(nameobj),
-                               base, dict)) == 0)
-    goto fail;
+  if ((dict = PyDict_New()) == 0) goto fail;
 
   if (mm) {
     while (mm->ml_name) {
@@ -344,6 +338,13 @@ PyObject *mkexc(PyObject *mod, PyObject *base,
     }
   }
 
+  if ((nameobj = PyString_FromFormat("%s.%s",
+                                    PyModule_GetName(mod),
+                                    name)) == 0 ||
+      (exc = PyErr_NewException(PyString_AS_STRING(nameobj),
+                               base, dict)) == 0)
+    goto fail;
+
 done:
   Py_XDECREF(nameobj);
   Py_XDECREF(dict);
@@ -503,7 +504,7 @@ static PyTypeObject itemiter_pytype_skel = {
     Py_TPFLAGS_BASETYPE,
 
   /* @tp_doc@ */
-"Iterates over the keys of a mapping.",
+  "Iterates over the items of a mapping.",
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
@@ -561,7 +562,7 @@ static PyTypeObject valiter_pytype_skel = {
     Py_TPFLAGS_BASETYPE,
 
   /* @tp_doc@ */
-"Iterates over the values of a mapping.",
+  "Iterates over the values of a mapping.",
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
@@ -736,13 +737,15 @@ end:
   return (rc);
 }
 
-static char *def_kwlist[] = { "key", "default", 0 };
+static const char *const def_kwlist[] = { "key", "default", 0 };
 
 PyObject *gmapmeth_get(PyObject *me, PyObject *arg, PyObject *kw)
 {
   PyObject *k, *def = Py_None, *v;
 
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|O:get", def_kwlist, &k, &def))
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|O:get",
+                                  (/*unconst*/ char **)def_kwlist,
+                                  &k, &def))
     return (0);
   if ((v = PyObject_GetItem(me, k)) != 0) return (v);
   PyErr_Clear();
@@ -754,7 +757,8 @@ PyObject *gmapmeth_setdefault(PyObject *me, PyObject *arg, PyObject *kw)
   PyObject *k, *def = Py_None, *v;
 
   if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|O:setdefault",
-                                  def_kwlist, &k, &def))
+                                  (/*unconst*/ char **)def_kwlist,
+                                  &k, &def))
     return (0);
   if ((v = PyObject_GetItem(me, k)) != 0) return (v);
   PyErr_Clear();
@@ -766,7 +770,9 @@ PyObject *gmapmeth_pop(PyObject *me, PyObject *arg, PyObject *kw)
 {
   PyObject *k, *def = 0, *v;
 
-  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|O:pop", def_kwlist, &k, &def))
+  if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|O:pop",
+                                  (/*unconst*/ char **)def_kwlist,
+                                  &k, &def))
     return (0);
   if ((v = PyObject_GetItem(me, k)) != 0) {
     PyObject_DelItem(me, k);
@@ -839,7 +845,7 @@ static PyObject *meth__set_home_module(PyObject *me, PyObject *arg)
 
 static const PyMethodDef methods[] = {
 #define METHNAME(func) meth_##func
-  METH (_set_home_module,      "_set_home_module(MOD)")
+  METH (_set_home_module, "_set_home_module(MOD)")
 #undef METHNAME
   { 0 }
 };