• Raymond Hettinger's avatar
    Fix other re-entrancy nits for the lru_cache. · f2c17a92
    Raymond Hettinger yazdı
    Keep references for oldkey and oldvalue so they can't
    trigger a __del__ method to reenter our thread.
    
    Move the cache[key]=link step to the end, after the link
    data is in a consistent state.
    
    Under exotic circumstances, the cache[key]=link step could
    trigger reentrancy (i.e. the key would have to have a hash
    exactly equal to that for another key in the cache and the
    key would need a __eq__ method that makes a reentrant call
    our cached function).
    f2c17a92
functools.py 12.3 KB