- patchlevel 1069
This commit is contained in:
parent
240fd3fd1b
commit
81c146f213
210
7.3.1069
Normal file
210
7.3.1069
Normal file
@ -0,0 +1,210 @@
|
||||
To: vim_dev@googlegroups.com
|
||||
Subject: Patch 7.3.1069
|
||||
Fcc: outbox
|
||||
From: Bram Moolenaar <Bram@moolenaar.net>
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
------------
|
||||
|
||||
Patch 7.3.1069
|
||||
Problem: Python: memory leaks.
|
||||
Solution: Python patch 28: Purge out DICTKEY_CHECK_EMPTY macros. (ZyX)
|
||||
Files: src/if_py_both.h
|
||||
|
||||
|
||||
*** ../vim-7.3.1068/src/if_py_both.h 2013-05-30 13:37:23.000000000 +0200
|
||||
--- src/if_py_both.h 2013-05-30 14:50:11.000000000 +0200
|
||||
***************
|
||||
*** 32,46 ****
|
||||
|
||||
#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 (decref) \
|
||||
{ \
|
||||
--- 32,39 ----
|
||||
|
||||
#define DICTKEY_DECL \
|
||||
PyObject *dictkey_todecref = NULL;
|
||||
#define DICTKEY_GET(err, decref) \
|
||||
! if (!(key = StringToChars(keyObject, &dictkey_todecref))) \
|
||||
{ \
|
||||
if (decref) \
|
||||
{ \
|
||||
***************
|
||||
*** 50,56 ****
|
||||
} \
|
||||
if (decref && !dictkey_todecref) \
|
||||
dictkey_todecref = keyObject; \
|
||||
! DICTKEY_CHECK_EMPTY(err)
|
||||
#define DICTKEY_UNREF \
|
||||
Py_XDECREF(dictkey_todecref);
|
||||
|
||||
--- 43,53 ----
|
||||
} \
|
||||
if (decref && !dictkey_todecref) \
|
||||
dictkey_todecref = keyObject; \
|
||||
! if (*key == NUL) \
|
||||
! { \
|
||||
! PyErr_SetString(PyExc_ValueError, _("empty keys are not allowed")); \
|
||||
! return err; \
|
||||
! }
|
||||
#define DICTKEY_UNREF \
|
||||
Py_XDECREF(dictkey_todecref);
|
||||
|
||||
***************
|
||||
*** 4551,4557 ****
|
||||
|
||||
while (PyDict_Next(obj, &iter, &keyObject, &valObject))
|
||||
{
|
||||
! DICTKEY_DECL
|
||||
|
||||
if (keyObject == NULL || valObject == NULL)
|
||||
{
|
||||
--- 4548,4554 ----
|
||||
|
||||
while (PyDict_Next(obj, &iter, &keyObject, &valObject))
|
||||
{
|
||||
! PyObject *todecref = NULL;
|
||||
|
||||
if (keyObject == NULL || valObject == NULL)
|
||||
{
|
||||
***************
|
||||
*** 4559,4574 ****
|
||||
return -1;
|
||||
}
|
||||
|
||||
! if (!DICTKEY_SET_KEY)
|
||||
{
|
||||
dict_unref(dict);
|
||||
return -1;
|
||||
}
|
||||
- DICTKEY_CHECK_EMPTY(-1)
|
||||
|
||||
di = dictitem_alloc(key);
|
||||
|
||||
! DICTKEY_UNREF
|
||||
|
||||
if (di == NULL)
|
||||
{
|
||||
--- 4556,4576 ----
|
||||
return -1;
|
||||
}
|
||||
|
||||
! if (!(key = StringToChars(keyObject, &todecref)))
|
||||
! {
|
||||
! dict_unref(dict);
|
||||
! return -1;
|
||||
! }
|
||||
! if (*key == NUL)
|
||||
{
|
||||
dict_unref(dict);
|
||||
+ Py_XDECREF(todecref);
|
||||
return -1;
|
||||
}
|
||||
|
||||
di = dictitem_alloc(key);
|
||||
|
||||
! Py_XDECREF(todecref);
|
||||
|
||||
if (di == NULL)
|
||||
{
|
||||
***************
|
||||
*** 4632,4662 ****
|
||||
|
||||
while ((keyObject = PyIter_Next(iterator)))
|
||||
{
|
||||
! DICTKEY_DECL
|
||||
|
||||
! if (!DICTKEY_SET_KEY)
|
||||
{
|
||||
Py_DECREF(iterator);
|
||||
dict_unref(dict);
|
||||
- DICTKEY_UNREF
|
||||
return -1;
|
||||
}
|
||||
! DICTKEY_CHECK_EMPTY(-1)
|
||||
|
||||
if (!(valObject = PyObject_GetItem(obj, keyObject)))
|
||||
{
|
||||
Py_DECREF(keyObject);
|
||||
Py_DECREF(iterator);
|
||||
dict_unref(dict);
|
||||
- DICTKEY_UNREF
|
||||
return -1;
|
||||
}
|
||||
|
||||
di = dictitem_alloc(key);
|
||||
|
||||
- DICTKEY_UNREF
|
||||
-
|
||||
Py_DECREF(keyObject);
|
||||
|
||||
if (di == NULL)
|
||||
{
|
||||
--- 4634,4670 ----
|
||||
|
||||
while ((keyObject = PyIter_Next(iterator)))
|
||||
{
|
||||
! PyObject *todecref;
|
||||
|
||||
! if (!(key = StringToChars(keyObject, &todecref)))
|
||||
{
|
||||
+ Py_DECREF(keyObject);
|
||||
Py_DECREF(iterator);
|
||||
dict_unref(dict);
|
||||
return -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);
|
||||
return -1;
|
||||
}
|
||||
|
||||
di = dictitem_alloc(key);
|
||||
|
||||
Py_DECREF(keyObject);
|
||||
+ Py_XDECREF(todecref);
|
||||
|
||||
if (di == NULL)
|
||||
{
|
||||
*** ../vim-7.3.1068/src/version.c 2013-05-30 13:37:23.000000000 +0200
|
||||
--- src/version.c 2013-05-30 13:38:46.000000000 +0200
|
||||
***************
|
||||
*** 730,731 ****
|
||||
--- 730,733 ----
|
||||
{ /* Add new patch number below this line */
|
||||
+ /**/
|
||||
+ 1069,
|
||||
/**/
|
||||
|
||||
--
|
||||
How To Keep A Healthy Level Of Insanity:
|
||||
11. Specify that your drive-through order is "to go".
|
||||
|
||||
/// Bram Moolenaar -- Bram@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 ///
|
Loading…
Reference in New Issue
Block a user