Author: Carl Friedrich Bolz <cfb...@gmx.de>
Branch: value-profiling
Changeset: r81866:e411e587da9b
Date: 2016-01-19 20:04 +0100
http://bitbucket.org/pypy/pypy/changeset/e411e587da9b/

Log:    what a stupid bug

diff --git a/pypy/objspace/std/mapdict.py b/pypy/objspace/std/mapdict.py
--- a/pypy/objspace/std/mapdict.py
+++ b/pypy/objspace/std/mapdict.py
@@ -82,7 +82,7 @@
             return True
         if not attr.ever_mutated:
             attr.ever_mutated = True
-        self.see_write(w_value)
+        attr.see_write(w_value)
         cell = obj._mapdict_read_storage(attr.storageindex)
         if jit.we_are_jitted() and attr.class_is_known():
             cls = attr.read_constant_cls()
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
@@ -558,6 +558,19 @@
     obj.setdictvalue(space, "a", a1)
     assert obj.getdictvalue(space, "a") is a1
 
+
+def test_bug_lost_write(monkeypatch):
+    none = Value(None)
+    true = Value(True)
+    false = Value(False)
+    cls = Class()
+    obj = cls.instantiate()
+    obj.setdictvalue(space, "tw", true)
+    obj.setdictvalue(space, "h", none)
+    obj.setdictvalue(space, "tw", false)
+    obj.setdictvalue(space, "tw", true)
+    assert obj.getdictvalue(space, "tw") is true
+
 # ___________________________________________________________
 # dict tests
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to