  float_dealloc(PyFloatObject *op)
  {
      if (PyFloat_CheckExact(op)) {
-+        _PyFreeList_Alloc(op);
++        _PyFreeList_Free(op);
          Py_TYPE(op) = (struct _typeobject *)free_list;
          free_list = op;
      }

     Py_XDECREF(m->m_self);
     Py_XDECREF(m->m_module);
     if (numfree < PyCFunction_MAXFREELIST) {
+        _PyFreeList_Alloc(m);
         m->m_self = (PyObject *)free_list;
         free_list = m;
         numfree++;

     }
-    if (numfree < PyList_MAXFREELIST && PyList_CheckExact(op))
+    if (numfree < PyList_MAXFREELIST && PyList_CheckExact(op)) {
+        _PyFreeList_Free(op);
         free_list[numfree++] = op;
+    }
     else
