Browse Source

bpo-1635741: Port _heapq module to multiphase initialization (GH19057)

pull/19060/head
Dong-hee Na 6 years ago
committed by GitHub
parent
commit
4657a8a0d0
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      Misc/NEWS.d/next/Core and Builtins/2020-03-18-19-48-53.bpo-1635741.ELEihr.rst
  2. 31
      Modules/_heapqmodule.c

1
Misc/NEWS.d/next/Core and Builtins/2020-03-18-19-48-53.bpo-1635741.ELEihr.rst

@ -0,0 +1 @@
Port _heapq module to multiphase initialization.

31
Modules/_heapqmodule.c

@ -555,7 +555,6 @@ _heapq__heapify_max(PyObject *module, PyObject *heap)
return heapify_internal(heap, siftup_max);
}
static PyMethodDef heapq_methods[] = {
_HEAPQ_HEAPPUSH_METHODDEF
_HEAPQ_HEAPPUSHPOP_METHODDEF
@ -694,13 +693,29 @@ Believe me, real good tape sorts were quite spectacular to watch!\n\
From all times, sorting has always been a Great Art! :-)\n");
static int
heapq_exec(PyObject *m)
{
PyObject *about = PyUnicode_FromString(__about__);
if (PyModule_AddObject(m, "__about__", about) < 0) {
Py_DECREF(about);
return -1;
}
return 0;
}
static struct PyModuleDef_Slot heapq_slots[] = {
{Py_mod_exec, heapq_exec},
{0, NULL}
};
static struct PyModuleDef _heapqmodule = {
PyModuleDef_HEAD_INIT,
"_heapq",
module_doc,
-1,
0,
heapq_methods,
NULL,
heapq_slots,
NULL,
NULL,
NULL
@ -709,13 +724,5 @@ static struct PyModuleDef _heapqmodule = {
PyMODINIT_FUNC
PyInit__heapq(void)
{
PyObject *m, *about;
m = PyModule_Create(&_heapqmodule);
if (m == NULL)
return NULL;
about = PyUnicode_DecodeUTF8(__about__, strlen(__about__), NULL);
PyModule_AddObject(m, "__about__", about);
return m;
return PyModuleDef_Init(&_heapqmodule);
}
Loading…
Cancel
Save