This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author serhiy.storchaka
Recipients audric, methane, serhiy.storchaka, vstinner, xiang.zhang
Date 2017-02-07.20:00:51
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <>
PyDict_SetItem() can trigger destructor which first call _PyObjectDict_SetItem() which change CACHED_KEYS(tp) and then call PyDict_SetItem() which call dictresize(). At the end it may be possible that cached != ((PyDictObject *)dict)->ma_keys and cached != CACHED_KEYS(tp) and CACHED_KEYS(tp) != ((PyDictObject *)dict)->ma_keys.

Wouldn't be better to just update the cached variable after calling PyDict_SetItem()?

    if (was_shared && (cached = CACHED_KEYS(tp)) != NULL && cached != ((PyDictObject *)dict)->ma_keys)
Date User Action Args
2017-02-07 20:00:51serhiy.storchakasetrecipients: + serhiy.storchaka, vstinner, methane, xiang.zhang, audric
2017-02-07 20:00:51serhiy.storchakasetmessageid: <>
2017-02-07 20:00:51serhiy.storchakalinkissue29438 messages
2017-02-07 20:00:51serhiy.storchakacreate