From: Bram Moolenaar Date: Fri, 21 Sep 2012 11:43:14 +0000 (+0200) Subject: updated for version 7.3.670 X-Git-Tag: v7.3.670 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=696c2116dc5e5403644d7f7dcaea49b83cf5a8f5;p=vim updated for version 7.3.670 Problem: Python: memory leaks when there are exceptions. Solution: Add DICTKEY_UNREF in the right places. (ZyX) --- diff --git a/src/if_py_both.h b/src/if_py_both.h index 5e12638f5..c8a7fca7f 100644 --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -799,14 +799,14 @@ DictionaryItem(PyObject *self, PyObject *keyObject) di = dict_find(((DictionaryObject *) (self))->dict, key, -1); + DICTKEY_UNREF + if (di == NULL) { PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); return NULL; } - DICTKEY_UNREF - return ConvertToPyObject(&di->di_tv); } @@ -835,6 +835,7 @@ DictionaryAssItem(PyObject *self, PyObject *keyObject, PyObject *valObject) if (di == NULL) { + DICTKEY_UNREF PyErr_SetString(PyExc_IndexError, _("no such key in dictionary")); return -1; } @@ -859,6 +860,7 @@ DictionaryAssItem(PyObject *self, PyObject *keyObject, PyObject *valObject) if (dict_add(d, di) == FAIL) { + DICTKEY_UNREF vim_free(di); PyErr_SetVim(_("failed to add key to dictionary")); return -1; diff --git a/src/version.c b/src/version.c index 6ac25907c..4fb274395 100644 --- a/src/version.c +++ b/src/version.c @@ -719,6 +719,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 670, /**/ 669, /**/