diff --git a/src/if_py_both.h b/src/if_py_both.h
index be75cc8..287191a 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -5354,6 +5354,7 @@
 {
     int		i;
     PyObject	*other_module;
+    PyObject	*attr;
 
     for (i = 0; i < (int)(sizeof(numeric_constants)
 					   / sizeof(struct numeric_constant));
@@ -5392,14 +5393,26 @@
     if (!(py_chdir = PyObject_GetAttrString(other_module, "chdir")))
 	return -1;
     ADD_OBJECT(m, "_chdir", py_chdir);
-    if (PyObject_SetAttrString(other_module, "chdir", get_attr(m, "chdir")))
+    if (!(attr = get_attr(m, "chdir")))
 	return -1;
+    if (PyObject_SetAttrString(other_module, "chdir", attr))
+    {
+	Py_DECREF(attr);
+	return -1;
+    }
+    Py_DECREF(attr);
 
     if ((py_fchdir = PyObject_GetAttrString(other_module, "fchdir")))
     {
 	ADD_OBJECT(m, "_fchdir", py_fchdir);
-	if (PyObject_SetAttrString(other_module,"fchdir",get_attr(m,"fchdir")))
+	if (!(attr = get_attr(m, "fchdir")))
 	    return -1;
+	if (PyObject_SetAttrString(other_module, "fchdir", attr))
+	{
+	    Py_DECREF(attr);
+	    return -1;
+	}
+	Py_DECREF(attr);
     }
     else
 	PyErr_Clear();
diff --git a/src/if_python.c b/src/if_python.c
index 318b170..518b4e3 100644
--- a/src/if_python.c
+++ b/src/if_python.c
@@ -210,6 +210,7 @@
 # define PyMapping_Check dll_PyMapping_Check
 # define PyIter_Next dll_PyIter_Next
 # define PyModule_GetDict dll_PyModule_GetDict
+# define PyModule_AddObject dll_PyModule_AddObject
 # define PyRun_SimpleString dll_PyRun_SimpleString
 # define PyRun_String dll_PyRun_String
 # define PyObject_GetAttrString dll_PyObject_GetAttrString
@@ -344,6 +345,7 @@
 static int (*dll_PyMapping_Check)(PyObject *);
 static PyObject* (*dll_PyIter_Next)(PyObject *);
 static PyObject*(*dll_PyModule_GetDict)(PyObject *);
+static int(*dll_PyModule_AddObject)(PyObject *, const char *, PyObject *);
 static int(*dll_PyRun_SimpleString)(char *);
 static PyObject *(*dll_PyRun_String)(char *, int, PyObject *, PyObject *);
 static PyObject* (*dll_PyObject_GetAttrString)(PyObject *, const char *);
@@ -509,6 +511,7 @@
     {"PyMapping_Check", (PYTHON_PROC*)&dll_PyMapping_Check},
     {"PyIter_Next", (PYTHON_PROC*)&dll_PyIter_Next},
     {"PyModule_GetDict", (PYTHON_PROC*)&dll_PyModule_GetDict},
+    {"PyModule_AddObject", (PYTHON_PROC*)&dll_PyModule_AddObject},
     {"PyRun_SimpleString", (PYTHON_PROC*)&dll_PyRun_SimpleString},
     {"PyRun_String", (PYTHON_PROC*)&dll_PyRun_String},
     {"PyObject_GetAttrString", (PYTHON_PROC*)&dll_PyObject_GetAttrString},
@@ -1357,19 +1360,9 @@
 #endif
 
     static int
-add_object(PyObject *dict, const char *name, PyObject *object)
-{
-    if (PyDict_SetItemString(dict, (char *) name, object))
-	return -1;
-    Py_DECREF(object);
-    return 0;
-}
-
-    static int
 PythonMod_Init(void)
 {
     PyObject *mod;
-    PyObject *dict;
 
     /* The special value is removed from sys.path in Python_Init(). */
     static char *(argv[2]) = {"/must>not&exist/foo", NULL};
@@ -1382,9 +1375,8 @@
 
     mod = Py_InitModule4("vim", VimMethods, (char *)NULL, (PyObject *)NULL,
 			    PYTHON_API_VERSION);
-    dict = PyModule_GetDict(mod);
 
-    return populate_module(dict, add_object, PyDict_GetItemString);
+    return populate_module(mod, PyModule_AddObject, PyObject_GetAttrString);
 }
 
 /*************************************************************************
diff --git a/src/version.c b/src/version.c
index ba277a0..1bdba02 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1162,
+/**/
     1161,
 /**/
     1160,
