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