[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