[pypy-svn] pypy default: simplify by only mallocing once
gutworth
commits-noreply at bitbucket.org
Mon Jan 24 23:33:13 CET 2011
Author: Benjamin Peterson <benjamin at python.org>
Branch:
Changeset: r41273:260dd493fcd1
Date: 2011-01-24 16:34 -0600
http://bitbucket.org/pypy/pypy/changeset/260dd493fcd1/
Log: simplify by only mallocing once
diff --git a/pypy/rpython/module/ll_os.py b/pypy/rpython/module/ll_os.py
--- a/pypy/rpython/module/ll_os.py
+++ b/pypy/rpython/module/ll_os.py
@@ -684,19 +684,17 @@
c_getgroups = self.llexternal('getgroups', [rffi.INT, GP], rffi.INT)
def getgroups_llimpl():
- groups = lltype.malloc(GP.TO, 0, flavor='raw')
- try:
- n = c_getgroups(0, groups)
- if n >= 0:
- lltype.free(groups, flavor='raw')
- groups = lltype.malloc(GP.TO, n, flavor='raw')
+ n = c_getgroups(0, lltype.nullptr(GP.TO))
+ if n >= 0:
+ groups = lltype.malloc(GP.TO, n, flavor='raw')
+ try:
n = c_getgroups(n, groups)
result = [groups[i] for i in range(n)]
- if n >= 0:
- return result
+ finally:
+ lltype.free(groups, flavor='raw')
+ if n >= 0:
+ return result
raise OSError(rposix.get_errno(), "os_getgroups failed")
- finally:
- lltype.free(groups, flavor='raw')
return extdef([], [self.GID_T], llimpl=getgroups_llimpl,
export_name="ll_os.ll_getgroups")
More information about the Pypy-commit
mailing list