[PATCH 7 of 7 V2] parsers: use PYMODULEINIT

Jun Wu quark at fb.com
Sat May 13 14:55:29 EDT 2017


# HG changeset patch
# User Jun Wu <quark at fb.com>
# Date 1494290762 25200
#      Mon May 08 17:46:02 2017 -0700
# Node ID d449ad60b6ae74ddf7a6765ab2687a91435c62e9
# Parent  86b0d4567e2f7876a492ab2e60220cadb8191625
# Available At https://bitbucket.org/quark-zju/hg-draft
#              hg pull https://bitbucket.org/quark-zju/hg-draft -r d449ad60b6ae
parsers: use PYMODULEINIT

diff --git a/mercurial/parsers.c b/mercurial/parsers.c
--- a/mercurial/parsers.c
+++ b/mercurial/parsers.c
@@ -2855,5 +2855,5 @@ void dirs_module_init(PyObject *mod);
 void manifest_module_init(PyObject *mod);
 
-static void module_init(PyObject *mod)
+static int module_init(PyObject *mod)
 {
 	/* This module constant has two purposes.  First, it lets us unit test
@@ -2873,5 +2873,5 @@ static void module_init(PyObject *mod)
 	if (PyType_Ready(&indexType) < 0 ||
 	    PyType_Ready(&dirstateTupleType) < 0)
-		return;
+		return -1;
 	Py_INCREF(&indexType);
 	PyModule_AddObject(mod, "index", (PyObject *)&indexType);
@@ -2884,4 +2884,5 @@ static void module_init(PyObject *mod)
 	if (nullentry)
 		PyObject_GC_UnTrack(nullentry);
+	return 0;
 }
 
@@ -2912,32 +2913,4 @@ static int check_python_version(void)
 }
 
-#ifdef IS_PY3K
-static struct PyModuleDef parsers_module = {
-	PyModuleDef_HEAD_INIT,
-	"parsers",
-	parsers_doc,
-	-1,
-	methods
-};
-
-PyMODINIT_FUNC PyInit_parsers(void)
-{
-	PyObject *mod;
-
-	if (check_python_version() == -1)
-		return NULL;
-	mod = PyModule_Create(&parsers_module);
-	module_init(mod);
-	return mod;
-}
-#else
-PyMODINIT_FUNC initparsers(void)
-{
-	PyObject *mod;
-
-	if (check_python_version() == -1)
-		return;
-	mod = Py_InitModule3("parsers", methods, parsers_doc);
-	module_init(mod);
-}
-#endif
+PYMODULEINIT(parsers, methods, parsers_doc, 1, check_python_version(),
+	     module_init(m));


More information about the Mercurial-devel mailing list