Author: Philip Jenvey <[email protected]>
Branch:
Changeset: r73513:e6aa1e2c6877
Date: 2014-09-12 12:13 -0700
http://bitbucket.org/pypy/pypy/changeset/e6aa1e2c6877/
Log: utilize scoped allocation
diff --git a/rpython/translator/sandbox/rsandbox.py
b/rpython/translator/sandbox/rsandbox.py
--- a/rpython/translator/sandbox/rsandbox.py
+++ b/rpython/translator/sandbox/rsandbox.py
@@ -60,8 +60,7 @@
def need_more_data(self):
buflen = self.buflen
- buf = lltype.malloc(rffi.CCHARP.TO, buflen, flavor='raw')
- try:
+ with lltype.scoped_alloc(rffi.CCHARP.TO, buflen) as buf:
buflen = rffi.cast(rffi.SIZE_T, buflen)
count = ll_read_not_sandboxed(self.fd, buf, buflen)
count = rffi.cast(lltype.Signed, count)
@@ -69,20 +68,15 @@
raise IOError
self.buf += ''.join([buf[i] for i in range(count)])
self.buflen *= 2
- finally:
- lltype.free(buf, flavor='raw')
def sandboxed_io(buf):
STDIN = 0
STDOUT = 1
# send the buffer with the marshalled fnname and input arguments to STDOUT
- p = lltype.malloc(rffi.CCHARP.TO, len(buf), flavor='raw')
- try:
+ with lltype.scoped_alloc(rffi.CCHARP.TO, len(buf)) as p:
for i in range(len(buf)):
p[i] = buf[i]
writeall_not_sandboxed(STDOUT, p, len(buf))
- finally:
- lltype.free(p, flavor='raw')
# build a Loader that will get the answer from STDIN
loader = FdLoader(STDIN)
# check for errors
@@ -108,9 +102,8 @@
@signature(types.str(), returns=types.impossible())
def not_implemented_stub(msg):
STDERR = 2
- buf = rffi.str2charp(msg + '\n')
- writeall_not_sandboxed(STDERR, buf, len(msg) + 1)
- rffi.free_charp(buf)
+ with rffi.scoped_str2charp(msg + '\n') as buf:
+ writeall_not_sandboxed(STDERR, buf, len(msg) + 1)
raise RuntimeError(msg) # XXX in RPython, the msg is ignored at the moment
dump_string = rmarshal.get_marshaller(str)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit