Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r45315:afeebea4b340
Date: 2011-07-03 11:43 +0200
http://bitbucket.org/pypy/pypy/changeset/afeebea4b340/

Log:    merge heads

diff --git a/pypy/objspace/std/dictmultiobject.py 
b/pypy/objspace/std/dictmultiobject.py
--- a/pypy/objspace/std/dictmultiobject.py
+++ b/pypy/objspace/std/dictmultiobject.py
@@ -163,10 +163,7 @@
         elif self.space.is_w(self.space.type(w_key), self.space.w_int):
             self.switch_to_int_strategy(w_dict)
         else:
-            strategy = self.space.fromcache(ObjectDictStrategy)
-            storage = strategy.get_empty_storage()
-            w_dict.strategy = strategy
-            w_dict.dstorage = storage
+            self.switch_to_object_strategy(w_dict)
 
     def switch_to_string_strategy(self, w_dict):
         strategy = self.space.fromcache(StringDictStrategy)
@@ -180,6 +177,12 @@
         w_dict.strategy = strategy
         w_dict.dstorage = storage
 
+    def switch_to_object_strategy(self, w_dict):
+        strategy = self.space.fromcache(ObjectDictStrategy)
+        storage = strategy.get_empty_storage()
+        w_dict.strategy = strategy
+        w_dict.dstorage = storage
+
     def getitem(self, w_dict, w_key):
         #return w_value or None
         # in case the key is unhashable, try to hash it
diff --git a/pypy/objspace/std/test/test_mapdict.py 
b/pypy/objspace/std/test/test_mapdict.py
--- a/pypy/objspace/std/test/test_mapdict.py
+++ b/pypy/objspace/std/test/test_mapdict.py
@@ -622,6 +622,14 @@
         assert a.__dict__ is d
         assert isinstance(a, B)
 
+    def test_setdict(self):
+        class A(object):
+            pass
+
+        a = A()
+        a.__dict__ = {}
+        a.__dict__ = {}
+
 
 class AppTestWithMapDictAndCounters(object):
     def setup_class(cls):
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to