diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-08-28 18:17:03 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-08-28 18:17:03 (GMT) |
commit | 1a9a9d543327397396827642895410183f8902d5 (patch) | |
tree | 56ded308662fe5b0a410edef287cb23133ccc574 /Lib/_threading_local.py | |
parent | 64a38c0eb5b7fd6e4ee5f3e912cff9eda8dd19af (diff) | |
download | cpython-1a9a9d543327397396827642895410183f8902d5.zip cpython-1a9a9d543327397396827642895410183f8902d5.tar.gz cpython-1a9a9d543327397396827642895410183f8902d5.tar.bz2 |
Issue #1868: Eliminate subtle timing issues in thread-local objects by
getting rid of the cached copy of thread-local attribute dictionary.
Diffstat (limited to 'Lib/_threading_local.py')
-rw-r--r-- | Lib/_threading_local.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Lib/_threading_local.py b/Lib/_threading_local.py index b0edc03..3af7807 100644 --- a/Lib/_threading_local.py +++ b/Lib/_threading_local.py @@ -194,6 +194,10 @@ class local(_localbase): lock.release() def __setattr__(self, name, value): + if name == '__dict__': + raise AttributeError( + "%r object attribute '__dict__' is read-only" + % self.__class__.__name__) lock = object.__getattribute__(self, '_local__lock') lock.acquire() try: @@ -203,6 +207,10 @@ class local(_localbase): lock.release() def __delattr__(self, name): + if name == '__dict__': + raise AttributeError( + "%r object attribute '__dict__' is read-only" + % self.__class__.__name__) lock = object.__getattribute__(self, '_local__lock') lock.acquire() try: |