]> granicus.if.org Git - python/commit
Fix other re-entrancy nits for the lru_cache.
authorRaymond Hettinger <python@rcn.com>
Mon, 4 Mar 2013 08:34:09 +0000 (03:34 -0500)
committerRaymond Hettinger <python@rcn.com>
Mon, 4 Mar 2013 08:34:09 +0000 (03:34 -0500)
commitf2c17a9276e5793b4a0e9e84a338a1c874ddd01c
treea7aabb999cf23a0818133489f12e47256ae1b187
parent03923426733dcc9f6c998057114212c168c3b1cd
Fix other re-entrancy nits for the lru_cache.

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).
Lib/functools.py