[pypy-svn] r46798 - pypy/dist/pypy/rlib

arigo at codespeak.net arigo at codespeak.net
Fri Sep 21 16:43:39 CEST 2007


Author: arigo
Date: Fri Sep 21 16:43:38 2007
New Revision: 46798

Modified:
   pypy/dist/pypy/rlib/rsocket.py
Log:
Zero-initialize all sockaddr structures.  Helps at least on OS/X.


Modified: pypy/dist/pypy/rlib/rsocket.py
==============================================================================
--- pypy/dist/pypy/rlib/rsocket.py	(original)
+++ pypy/dist/pypy/rlib/rsocket.py	Fri Sep 21 16:43:38 2007
@@ -245,7 +245,7 @@
         result = instantiate(INETAddress)
         # store the malloc'ed data into 'result' as soon as possible
         # to avoid leaks if an exception occurs inbetween
-        sin = rffi.make(_c.sockaddr_in)
+        sin = lltype.malloc(_c.sockaddr_in, flavor='raw', zero=True)
         result.setdata(sin, sizeof(_c.sockaddr_in))
         # PLAT sin_len
         rffi.setintfield(sin, 'c_sin_family', AF_INET)
@@ -348,7 +348,7 @@
         result = instantiate(INET6Address)
         # store the malloc'ed data into 'result' as soon as possible
         # to avoid leaks if an exception occurs inbetween
-        sin = rffi.make(_c.sockaddr_in6)
+        sin = lltype.malloc(_c.sockaddr_in6, flavor='raw', zero=True)
         result.setdata(sin, sizeof(_c.sockaddr_in6))
         rffi.setintfield(sin, 'c_sin6_family', AF_INET)
         rffi.structcopy(sin.c_sin6_addr, in6_addr)
@@ -370,7 +370,7 @@
         maxlen = sizeof(struct)
 
         def __init__(self, path):
-            sun = rffi.make(_c.sockaddr_un)
+            sun = lltype.malloc(_c.sockaddr_un, flavor='raw', zero=True)
             baseofs = offsetof(_c.sockaddr_un, 'c_sun_path')
             self.setdata(sun, baseofs + len(path))
             rffi.setintfield(sun, 'c_sun_family', AF_UNIX)
@@ -425,7 +425,7 @@
         maxlen = minlen = sizeof(struct)
 
         def __init__(self, pid, groups):
-            addr = rffi.make(_c.sockaddr_nl)
+            addr = lltype.malloc(_c.sockaddr_nl, flavor='raw', zero=True)
             self.setdata(addr, NETLINKAddress.maxlen)
             rffi.setintfield(addr, 'c_nl_family', AF_NETLINK)
             rffi.setintfield(addr, 'c_nl_pid', pid)
@@ -484,7 +484,7 @@
         result = instantiate(INETAddress)
     elif result.family != AF_INET:
         raise RSocketError("address family mismatched")
-    sin = rffi.make(_c.sockaddr_in)
+    sin = lltype.malloc(_c.sockaddr_in, flavor='raw', zero=True)
     result.setdata(sin, sizeof(_c.sockaddr_in))
     rffi.setintfield(sin, 'c_sin_family', AF_INET)   # PLAT sin_len
     rffi.setintfield(sin.c_sin_addr, 'c_s_addr', s_addr)
@@ -493,7 +493,7 @@
 def make_null_address(family):
     klass = familyclass(family)
     result = instantiate(klass)
-    buf = mallocbuf(klass.maxlen)
+    buf = lltype.malloc(rffi.CCHARP.TO, klass.maxlen, flavor='raw', zero=True)
     result.setdata(buf, 0)
     return result, klass.maxlen
 



More information about the Pypy-commit mailing list