From a0740d16164ec2d876f4403b0ef27cd3e7e12db8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 17 Sep 2021 08:56:55 +0530 Subject: [PATCH] Use multi-phase initialization for unicode-names --- kittens/unicode_input/unicode_names.c | 18 +++++++++++------- kitty/data-types.h | 11 ++++++----- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/kittens/unicode_input/unicode_names.c b/kittens/unicode_input/unicode_names.c index a124a4be9..9a9eb93fd 100644 --- a/kittens/unicode_input/unicode_names.c +++ b/kittens/unicode_input/unicode_names.c @@ -91,20 +91,24 @@ static PyMethodDef module_methods[] = { {NULL, NULL, 0, NULL} /* Sentinel */ }; +static int +exec_module(PyObject *m UNUSED) { + return 0; +} + +IGNORE_PEDANTIC_WARNINGS +static PyModuleDef_Slot slots[] = { {Py_mod_exec, (void*)exec_module}, {0, NULL} }; +END_IGNORE_PEDANTIC_WARNINGS + static struct PyModuleDef module = { .m_base = PyModuleDef_HEAD_INIT, .m_name = "unicode_names", /* name of module */ .m_doc = NULL, - .m_size = -1, + .m_slots = slots, .m_methods = module_methods }; - EXPORTED PyMODINIT_FUNC PyInit_unicode_names(void) { - PyObject *m; - - m = PyModule_Create(&module); - if (m == NULL) return NULL; - return m; + return PyModuleDef_Init(&module); } diff --git a/kitty/data-types.h b/kitty/data-types.h index 9e64b4e1c..2451cafda 100644 --- a/kitty/data-types.h +++ b/kitty/data-types.h @@ -113,17 +113,18 @@ typedef enum { TILING, SCALED, MIRRORED } BackgroundImageLayout; } #ifdef __clang__ -#define START_ALLOW_CASE_RANGE _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wpedantic\"") -#define END_ALLOW_CASE_RANGE _Pragma("clang diagnostic pop") +#define IGNORE_PEDANTIC_WARNINGS _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wpedantic\"") +#define END_IGNORE_PEDANTIC_WARNINGS _Pragma("clang diagnostic pop") #define ALLOW_UNUSED_RESULT _Pragma("clang diagnostic push") _Pragma("clang diagnostic ignored \"-Wunused-result\"") #define END_ALLOW_UNUSED_RESULT _Pragma("clang diagnostic pop") #else -#define START_ALLOW_CASE_RANGE _Pragma("GCC diagnostic ignored \"-Wpedantic\"") -#define END_ALLOW_CASE_RANGE _Pragma("GCC diagnostic pop") +#define IGNORE_PEDANTIC_WARNINGS _Pragma("GCC diagnostic ignored \"-Wpedantic\"") +#define END_IGNORE_PEDANTIC_WARNINGS _Pragma("GCC diagnostic pop") #define ALLOW_UNUSED_RESULT _Pragma("GCC diagnostic ignored \"-Wunused-result\"") #define END_ALLOW_UNUSED_RESULT _Pragma("GCC diagnostic pop") #endif - +#define START_ALLOW_CASE_RANGE IGNORE_PEDANTIC_WARNINGS +#define END_ALLOW_CASE_RANGE END_IGNORE_PEDANTIC_WARNINGS typedef enum UTF8State { UTF8_ACCEPT = 0, UTF8_REJECT = 1} UTF8State;