diff --git a/Cython/Utility/ObjectHandling.c b/Cython/Utility/ObjectHandling.c
index 9a65591c3c73677fe9b0104cd98e7d08afdae616..0c97748e191b5b5117a3ae7f04e6b7c467952524 100644
--- a/Cython/Utility/ObjectHandling.c
+++ b/Cython/Utility/ObjectHandling.c
@@ -1174,9 +1174,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
         || PyObject_TypeCheck(func, __pyx_CyFunctionType)
 #endif
             ) || !(PyCFunction_GET_FLAGS(func) & METH_O)) {
-        PyObject* args = PyTuple_Pack(1, arg);
+        PyObject* args = PyTuple_New(1);
         if (unlikely(!args)) return NULL;
+        PyTuple_SET_ITEM(args, 0, arg);
         result = __Pyx_PyObject_Call(func, args, NULL);
+        PyTuple_SET_ITEM(args, 0, NULL);
         Py_DECREF(args);
         return result;
     }