INADA Naoki added the comment: > Why res == 0 is added? If PyDict_SetItem() triggers recursive calling of > _PyObjectDict_SetItem() which calls PyDict_SetItem() it may be possible that > the first PyDict_SetItem() is failed while the dict is changed by the second > PyDict_SetItem() and CACHED_KEYS(tp) becomes outdated.
To avoid hiding error raised in PyDict_SetItem(). But it seems I was too nervous. The error will be hidden only when make_keys_shared() raise exception. I'll remove the check. BTW, how about -py35.patch? It is minimum patch to avoid "use after free". It skip CACHED_KEYS(tp) = NULL entirely. But I think I can apply same patch to Python 3.5 too. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue29438> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com