diff options
Diffstat (limited to 'Lib/weakref.py')
-rw-r--r-- | Lib/weakref.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/Lib/weakref.py b/Lib/weakref.py index 2968fb9..9f8ef3e 100644 --- a/Lib/weakref.py +++ b/Lib/weakref.py @@ -239,24 +239,27 @@ class WeakValueDictionary(collections.MutableMapping): try: o = self.data.pop(key)() except KeyError: + o = None + if o is None: if args: return args[0] - raise - if o is None: - raise KeyError(key) + else: + raise KeyError(key) else: return o def setdefault(self, key, default=None): try: - wr = self.data[key] + o = self.data[key]() except KeyError: + o = None + if o is None: if self._pending_removals: self._commit_removals() self.data[key] = KeyedRef(default, self._remove, key) return default else: - return wr() + return o def update(*args, **kwargs): if not args: |