Issue #24726: Revert setting the value on the dict if

_odict_add_new_node() fails.
This commit is contained in:
Serhiy Storchaka 2015-11-06 11:07:11 +02:00
parent 9c967611e3
commit d5f353ec8d
1 changed files with 7 additions and 1 deletions

View File

@ -1721,7 +1721,13 @@ PyODict_SetItem(PyObject *od, PyObject *key, PyObject *value) {
int res = PyDict_SetItem(od, key, value); int res = PyDict_SetItem(od, key, value);
if (res == 0) { if (res == 0) {
res = _odict_add_new_node((PyODictObject *)od, key); res = _odict_add_new_node((PyODictObject *)od, key);
/* XXX Revert setting the value on the dict? */ if (res < 0) {
/* Revert setting the value on the dict */
PyObject *exc, *val, *tb;
PyErr_Fetch(&exc, &val, &tb);
(void) PyDict_DelItem(od, key);
_PyErr_ChainExceptions(exc, val, tb);
}
} }
return res; return res;
}; };