[pypy-commit] pypy default: decref, fixes issue #2781
mattip
pypy.commits at gmail.com
Mon Apr 2 23:07:43 EDT 2018
Author: Matti Picus <matti.picus at gmail.com>
Branch:
Changeset: r94218:c20052c907ba
Date: 2018-04-03 06:05 +0300
http://bitbucket.org/pypy/pypy/changeset/c20052c907ba/
Log: decref, fixes issue #2781
diff --git a/pypy/module/cpyext/slotdefs.py b/pypy/module/cpyext/slotdefs.py
--- a/pypy/module/cpyext/slotdefs.py
+++ b/pypy/module/cpyext/slotdefs.py
@@ -13,7 +13,7 @@
ssizessizeargfunc, ssizeobjargproc, iternextfunc, initproc, richcmpfunc,
cmpfunc, hashfunc, descrgetfunc, descrsetfunc, objobjproc, objobjargproc,
readbufferproc, getbufferproc, ssizessizeobjargproc)
-from pypy.module.cpyext.pyobject import make_ref, from_ref, as_pyobj
+from pypy.module.cpyext.pyobject import make_ref, from_ref, as_pyobj, decref
from pypy.module.cpyext.pyerrors import PyErr_Occurred
from pypy.module.cpyext.memoryobject import fill_Py_buffer
from pypy.module.cpyext.state import State
@@ -63,6 +63,7 @@
py_args = tuple_from_args_w(space, __args__.arguments_w)
w_kwargs = w_kwargs_from_args(space, __args__)
res = generic_cpy_call(space, func_init, w_self, py_args, w_kwargs)
+ decref(space, py_args)
if rffi.cast(lltype.Signed, res) == -1:
space.fromcache(State).check_and_raise_exception(always=True)
return None
@@ -244,7 +245,9 @@
func_target = rffi.cast(ternaryfunc, func)
py_args = tuple_from_args_w(space, __args__.arguments_w)
w_kwargs = w_kwargs_from_args(space, __args__)
- return generic_cpy_call(space, func_target, w_self, py_args, w_kwargs)
+ ret = generic_cpy_call(space, func_target, w_self, py_args, w_kwargs)
+ decref(space, py_args)
+ return ret
class wrap_ssizessizeobjargproc(W_PyCWrapperObject):
def call(self, space, w_self, __args__):
More information about the pypy-commit
mailing list