]> granicus.if.org Git - python/commitdiff
Improve clear() method. Keeps key/value refcnts >= 1 until final dict.clear() so...
authorRaymond Hettinger <python@rcn.com>
Sat, 3 Apr 2010 03:14:28 +0000 (03:14 +0000)
committerRaymond Hettinger <python@rcn.com>
Sat, 3 Apr 2010 03:14:28 +0000 (03:14 +0000)
Lib/collections.py

index 1f1f51072b5fbeaf942cdbce0205978e795c0e2b..79f6696bb83140a1f3431bb00c252f2d0f36babf 100644 (file)
@@ -107,8 +107,14 @@ class OrderedDict(dict, MutableMapping):
 
     def clear(self):
         'od.clear() -> None.  Remove all items from od.'
-        for k in dict.keys(self):
-            del self[k]
+        try:
+            for node in self.__map.itervalues():
+                del node[:]
+            self.__root[:] = [self.__root, self.__root, None]
+            self.__map.clear()
+        except AttributeError:
+            pass
+        dict.clear(self)
 
     setdefault = MutableMapping.setdefault
     update = MutableMapping.update