[vim] - patchlevel 1162
Karsten Hopp
karsten at fedoraproject.org
Thu Jun 13 22:34:41 UTC 2013
commit d5bd53714d602b0ed23b1baa2cdd80957188f15d
Author: Karsten Hopp <karsten at redhat.com>
Date: Fri Jun 14 00:28:48 2013 +0200
- patchlevel 1162
7.3.1162 | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 163 insertions(+), 0 deletions(-)
---
diff --git a/7.3.1162 b/7.3.1162
new file mode 100644
index 0000000..547f965
--- /dev/null
+++ b/7.3.1162
@@ -0,0 +1,163 @@
+To: vim_dev at googlegroups.com
+Subject: Patch 7.3.1162
+Fcc: outbox
+From: Bram Moolenaar <Bram at moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.1162
+Problem: Python: Memory leaks
+Solution: Add more Py_DECREF(). (ZyX)
+Files: src/if_py_both.h, src/if_python.c
+
+
+*** ../vim-7.3.1161/src/if_py_both.h 2013-06-10 20:38:58.000000000 +0200
+--- src/if_py_both.h 2013-06-10 20:43:01.000000000 +0200
+***************
+*** 5354,5359 ****
+--- 5354,5360 ----
+ {
+ int i;
+ PyObject *other_module;
++ PyObject *attr;
+
+ for (i = 0; i < (int)(sizeof(numeric_constants)
+ / sizeof(struct numeric_constant));
+***************
+*** 5392,5405 ****
+ 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")))
+ return -1;
+
+ if ((py_fchdir = PyObject_GetAttrString(other_module, "fchdir")))
+ {
+ ADD_OBJECT(m, "_fchdir", py_fchdir);
+! if (PyObject_SetAttrString(other_module,"fchdir",get_attr(m,"fchdir")))
+ return -1;
+ }
+ else
+ PyErr_Clear();
+--- 5393,5418 ----
+ if (!(py_chdir = PyObject_GetAttrString(other_module, "chdir")))
+ return -1;
+ ADD_OBJECT(m, "_chdir", py_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 (!(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();
+*** ../vim-7.3.1161/src/if_python.c 2013-06-10 18:36:20.000000000 +0200
+--- src/if_python.c 2013-06-10 20:42:44.000000000 +0200
+***************
+*** 210,215 ****
+--- 210,216 ----
+ # 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,349 ****
+--- 345,351 ----
+ 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,514 ****
+--- 511,517 ----
+ {"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,1375 ****
+ #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};
+--- 1360,1368 ----
+***************
+*** 1382,1390 ****
+
+ mod = Py_InitModule4("vim", VimMethods, (char *)NULL, (PyObject *)NULL,
+ PYTHON_API_VERSION);
+- dict = PyModule_GetDict(mod);
+
+! return populate_module(dict, add_object, PyDict_GetItemString);
+ }
+
+ /*************************************************************************
+--- 1375,1382 ----
+
+ mod = Py_InitModule4("vim", VimMethods, (char *)NULL, (PyObject *)NULL,
+ PYTHON_API_VERSION);
+
+! return populate_module(mod, PyModule_AddObject, PyObject_GetAttrString);
+ }
+
+ /*************************************************************************
+*** ../vim-7.3.1161/src/version.c 2013-06-10 20:38:58.000000000 +0200
+--- src/version.c 2013-06-10 20:40:25.000000000 +0200
+***************
+*** 730,731 ****
+--- 730,733 ----
+ { /* Add new patch number below this line */
++ /**/
++ 1162,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+137. You decide to stay in college for an additional year or two,
+ just so you can have the free Internet access.
+
+ /// Bram Moolenaar -- Bram at Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
More information about the scm-commits
mailing list