From 73e891244c9e777cc3c254319efe881b776b97ce Mon Sep 17 00:00:00 2001
From: Stefan Behnel <stefan_ml@behnel.de>
Date: Thu, 17 Mar 2016 14:11:14 +0100
Subject: [PATCH] generally #define PyObject_Malloc() and friends to their
 PyMem_*() counterparts in PyPy

---
 Cython/Utility/CythonFunction.c  | 8 --------
 Cython/Utility/ModuleSetupCode.c | 6 ++++++
 2 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/Cython/Utility/CythonFunction.c b/Cython/Utility/CythonFunction.c
index 1bfc274d6..266a8b935 100644
--- a/Cython/Utility/CythonFunction.c
+++ b/Cython/Utility/CythonFunction.c
@@ -498,11 +498,7 @@ __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
         for (i = 0; i < m->defaults_pyobjects; i++)
             Py_XDECREF(pydefaults[i]);
 
-#if CYTHON_COMPILING_IN_CPYTHON
         PyObject_Free(m->defaults);
-#else
-        PyMem_Free(m->defaults);
-#endif
         m->defaults = NULL;
     }
 
@@ -712,11 +708,7 @@ static int __pyx_CyFunction_init(void) {
 static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
     __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
 
-#if CYTHON_COMPILING_IN_CPYTHON
     m->defaults = PyObject_Malloc(size);
-#else
-    m->defaults = PyMem_Malloc(size);
-#endif
     if (!m->defaults)
         return PyErr_NoMemory();
     memset(m->defaults, 0, size);
diff --git a/Cython/Utility/ModuleSetupCode.c b/Cython/Utility/ModuleSetupCode.c
index 52cc66cc3..a5576cef2 100644
--- a/Cython/Utility/ModuleSetupCode.c
+++ b/Cython/Utility/ModuleSetupCode.c
@@ -117,6 +117,12 @@
   #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
 #endif
 
+#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
+  #define PyObject_Malloc(s)   PyMem_Malloc(s)
+  #define PyObject_Free(p)     PyMem_Free(p)
+  #define PyObject_Realloc(p)  PyMem_Realloc(p)
+#endif
+
 #define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
 #define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
 
-- 
2.30.9