Message287286
> 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. |
|
Date |
User |
Action |
Args |
2017-02-08 08:55:08 | methane | set | recipients:
+ methane, vstinner, serhiy.storchaka, xiang.zhang, audric |
2017-02-08 08:55:08 | methane | set | messageid: <1486544108.07.0.017956021725.issue29438@psf.upfronthosting.co.za> |
2017-02-08 08:55:08 | methane | link | issue29438 messages |
2017-02-08 08:55:07 | methane | create | |
|