Author: Armin Rigo <[email protected]>
Branch: rpython-hash
Changeset: r89796:f6f8a968971c
Date: 2017-01-27 09:05 +0100
http://bitbucket.org/pypy/pypy/changeset/f6f8a968971c/
Log: First place to fix inside pypy
diff --git a/pypy/module/_weakref/interp__weakref.py
b/pypy/module/_weakref/interp__weakref.py
--- a/pypy/module/_weakref/interp__weakref.py
+++ b/pypy/module/_weakref/interp__weakref.py
@@ -193,6 +193,15 @@
W_WeakrefBase.__init__(self, space, w_obj, w_callable)
self.w_hash = None
+ def _cleanup_(self):
+ # When a prebuilt weakref is frozen inside a translation, if
+ # this weakref has got an already-cached w_hash, then throw it
+ # away. That's because the hash value will change after
+ # translation. It will be recomputed the first time we ask for
+ # it. Note that such a frozen weakref, if not dead, will point
+ # to a frozen object, so it will never die.
+ self.w_hash = None
+
def descr__init__weakref(self, space, w_obj, w_callable=None,
__args__=None):
if __args__.arguments_w:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit