Author: Armin Rigo <[email protected]>
Branch: refactor-wrapped-del
Changeset: r45497:4b0f56f41c5d
Date: 2011-07-11 23:09 +0200
http://bitbucket.org/pypy/pypy/changeset/4b0f56f41c5d/

Log:    Mostly revert the changes here. The __del__ method just needs to
        use enqueue_for_destruction() in order to call the space.xxx()
        methods.

diff --git a/pypy/module/_io/interp_bufferedio.py 
b/pypy/module/_io/interp_bufferedio.py
--- a/pypy/module/_io/interp_bufferedio.py
+++ b/pypy/module/_io/interp_bufferedio.py
@@ -838,9 +838,9 @@
             self.w_writer = None
             raise
 
-    def destructor(self):
-        # method overriden to not close the files
-        pass
+    def __del__(self):
+        self.clear_all_weakrefs()
+        # Don't call the base __del__: do not close the files!
 
     # forward to reader
     for method in ['read', 'peek', 'read1', 'readinto', 'readable']:
diff --git a/pypy/module/_io/interp_iobase.py b/pypy/module/_io/interp_iobase.py
--- a/pypy/module/_io/interp_iobase.py
+++ b/pypy/module/_io/interp_iobase.py
@@ -1,7 +1,7 @@
 from pypy.interpreter.baseobjspace import Wrappable
 from pypy.interpreter.typedef import (
     TypeDef, GetSetProperty, generic_new_descr, descr_get_dict, descr_set_dict,
-    make_weakref_descr, builtin_destructor)
+    make_weakref_descr)
 from pypy.interpreter.gateway import interp2app
 from pypy.interpreter.error import OperationError, operationerrfmt
 from pypy.rlib.rstring import StringBuilder
@@ -55,6 +55,11 @@
             return True
         return False
 
+    def __del__(self):
+        self.clear_all_weakrefs()
+        self.enqueue_for_destruction(self.space, W_IOBase.destructor,
+                                     'internal __del__ of ')
+
     def destructor(self):
         space = self.space
         w_closed = space.findattr(self, space.wrap('closed'))
@@ -68,7 +73,6 @@
             # equally as bad, and potentially more frequent (because of
             # shutdown issues).
             pass
-    builtin_destructor(locals(), 'destructor', Wrappable)
 
     def _CLOSED(self):
         # Use this macro whenever you want to check the internal `closed`
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to