# HG changeset patch # User Bram Moolenaar # Date 1370189257 -7200 # Node ID 26f2dbea7443f719c854c7a1fc35dbacdd129307 # Parent df660cd6fac4e862a7bd0a1c04f139f2b92f5f8d updated for version 7.3.1098 Problem: Python: Possible memory leaks Solution: Add Py_XDECREF() calls. (ZyX) diff --git a/src/if_py_both.h b/src/if_py_both.h --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -1017,6 +1017,7 @@ DictionaryLength(DictionaryObject *self) if (*key == NUL) { RAISE_NO_EMPTY_KEYS; + Py_XDECREF(todecref); return NULL; } @@ -1160,6 +1161,7 @@ DictionaryAssItem(DictionaryObject *self if (!(key = StringToChars(keyObject, &todecref))) return -1; + if (*key == NUL) { RAISE_NO_EMPTY_KEYS; @@ -2216,9 +2218,11 @@ OptionsItem(OptionsObject *self, PyObjec if (!(key = StringToChars(keyObject, &todecref))) return NULL; + if (*key == NUL) { RAISE_NO_EMPTY_KEYS; + Py_XDECREF(todecref); return NULL; } @@ -2349,9 +2353,11 @@ OptionsAssItem(OptionsObject *self, PyOb if (!(key = StringToChars(keyObject, &todecref))) return -1; + if (*key == NUL) { RAISE_NO_EMPTY_KEYS; + Py_XDECREF(todecref); return -1; } @@ -4568,6 +4574,7 @@ pydict_to_tv(PyObject *obj, typval_T *tv dict_unref(dict); return -1; } + if (*key == NUL) { dict_unref(dict); @@ -4651,6 +4658,7 @@ pymap_to_tv(PyObject *obj, typval_T *tv, dict_unref(dict); return -1; } + if (*key == NUL) { Py_DECREF(keyObject); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1098, +/**/ 1097, /**/ 1096,