Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r84545:cbe8138d93e1
Date: 2016-05-20 16:50 -0700
http://bitbucket.org/pypy/pypy/changeset/cbe8138d93e1/
Log: fix _finalize_ (register it)
diff --git a/pypy/module/_socket/interp_socket.py
b/pypy/module/_socket/interp_socket.py
--- a/pypy/module/_socket/interp_socket.py
+++ b/pypy/module/_socket/interp_socket.py
@@ -12,8 +12,8 @@
from pypy.interpreter.error import OperationError, oefmt
from pypy.interpreter.gateway import interp2app, unwrap_spec, WrappedDefault
from pypy.interpreter.typedef import (
- GetSetProperty, TypeDef, interp_attrproperty, make_weakref_descr
-)
+ GetSetProperty, TypeDef, generic_new_descr, interp_attrproperty,
+ make_weakref_descr)
# XXX Hack to seperate rpython and pypy
@@ -159,15 +159,14 @@
class W_Socket(W_Root):
- def __init__(self, space, sock):
+ def __init__(self, space, sock=None):
self.space = space
- self.sock = sock
- register_socket(space, sock)
-
- def descr_new(space, w_subtype, __args__):
- sock = space.allocate_instance(W_Socket, w_subtype)
- W_Socket.__init__(sock, space, RSocket.empty_rsocket())
- return space.wrap(sock)
+ if sock is None:
+ self.sock = RSocket.empty_rsocket()
+ else:
+ register_socket(space, sock)
+ self.sock = sock
+ self.register_finalizer(space)
@unwrap_spec(family=int, type=int, proto=int,
w_fileno=WrappedDefault(None))
@@ -184,12 +183,15 @@
raise converted_error(space, e)
def _finalize_(self):
- self.clear_all_weakrefs()
- if self.sock.fd != rsocket.INVALID_SOCKET:
+ sock = self.sock
+ if sock.fd != rsocket.INVALID_SOCKET:
try:
self._dealloc_warn()
finally:
- self.close_w(self.space)
+ try:
+ sock.close()
+ except SocketError:
+ pass
def get_type_w(self, space):
return space.wrap(self.sock.type)
@@ -734,7 +736,7 @@
shutdown(how) -- shut down traffic in one or both directions
[*] not available on all platforms!""",
- __new__ = interp2app(W_Socket.descr_new.im_func),
+ __new__ = generic_new_descr(W_Socket),
__init__ = interp2app(W_Socket.descr_init),
__repr__ = interp2app(W_Socket.descr_repr),
type = GetSetProperty(W_Socket.get_type_w),
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit