updated for version 7.3.1069
Problem:    Python: memory leaks.
Solution:   Python patch 28: Purge out DICTKEY_CHECK_EMPTY macros. (ZyX)
diff --git a/src/if_py_both.h b/src/if_py_both.h
index 5fe0476..df2af8c 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -32,15 +32,8 @@
 
 #define DICTKEY_DECL \
     PyObject	*dictkey_todecref = NULL;
-#define DICTKEY_CHECK_EMPTY(err) \
-    if (*key == NUL) \
-    { \
-	PyErr_SetString(PyExc_ValueError, _("empty keys are not allowed")); \
-	return err; \
-    }
-#define DICTKEY_SET_KEY (key = StringToChars(keyObject, &dictkey_todecref))
 #define DICTKEY_GET(err, decref) \
-    if (!DICTKEY_SET_KEY) \
+    if (!(key = StringToChars(keyObject, &dictkey_todecref))) \
     { \
 	if (decref) \
 	{ \
@@ -50,7 +43,11 @@
     } \
     if (decref && !dictkey_todecref) \
 	dictkey_todecref = keyObject; \
-    DICTKEY_CHECK_EMPTY(err)
+    if (*key == NUL) \
+    { \
+	PyErr_SetString(PyExc_ValueError, _("empty keys are not allowed")); \
+	return err; \
+    }
 #define DICTKEY_UNREF \
     Py_XDECREF(dictkey_todecref);
 
@@ -4551,7 +4548,7 @@
 
     while (PyDict_Next(obj, &iter, &keyObject, &valObject))
     {
-	DICTKEY_DECL
+	PyObject	*todecref = NULL;
 
 	if (keyObject == NULL || valObject == NULL)
 	{
@@ -4559,16 +4556,21 @@
 	    return -1;
 	}
 
-	if (!DICTKEY_SET_KEY)
+	if (!(key = StringToChars(keyObject, &todecref)))
 	{
 	    dict_unref(dict);
 	    return -1;
 	}
-	DICTKEY_CHECK_EMPTY(-1)
+	if (*key == NUL)
+	{
+	    dict_unref(dict);
+	    Py_XDECREF(todecref);
+	    return -1;
+	}
 
 	di = dictitem_alloc(key);
 
-	DICTKEY_UNREF
+	Py_XDECREF(todecref);
 
 	if (di == NULL)
 	{
@@ -4632,31 +4634,37 @@
 
     while ((keyObject = PyIter_Next(iterator)))
     {
-	DICTKEY_DECL
+	PyObject	*todecref;
 
-	if (!DICTKEY_SET_KEY)
+	if (!(key = StringToChars(keyObject, &todecref)))
 	{
+	    Py_DECREF(keyObject);
 	    Py_DECREF(iterator);
 	    dict_unref(dict);
-	    DICTKEY_UNREF
 	    return -1;
 	}
-	DICTKEY_CHECK_EMPTY(-1)
+	if (*key == NUL)
+	{
+	    Py_DECREF(keyObject);
+	    Py_DECREF(iterator);
+	    Py_XDECREF(todecref);
+	    dict_unref(dict);
+	    return -1;
+	}
 
 	if (!(valObject = PyObject_GetItem(obj, keyObject)))
 	{
 	    Py_DECREF(keyObject);
 	    Py_DECREF(iterator);
+	    Py_XDECREF(todecref);
 	    dict_unref(dict);
-	    DICTKEY_UNREF
 	    return -1;
 	}
 
 	di = dictitem_alloc(key);
 
-	DICTKEY_UNREF
-
 	Py_DECREF(keyObject);
+	Py_XDECREF(todecref);
 
 	if (di == NULL)
 	{
diff --git a/src/version.c b/src/version.c
index 7a1ab6e..38536e4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1069,
+/**/
     1068,
 /**/
     1067,