diff options
Diffstat (limited to 'fixes')
-rw-r--r-- | fixes/init-module.cocci | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/fixes/init-module.cocci b/fixes/init-module.cocci index fb59f45..afeb89a 100644 --- a/fixes/init-module.cocci +++ b/fixes/init-module.cocci @@ -1,9 +1,21 @@ -@@ +@ mod_init_fn @ type T; identifier FN; identifier MOD_VAR; expression MODULE_NAME, MODULE_METHODS, MODULE_DOC; @@ +T FN(void) { + ... + MOD_VAR = Py_InitModule3(MODULE_NAME, MODULE_METHODS, MODULE_DOC); + ... +} + +@@ +type mod_init_fn.T; +identifier mod_init_fn.FN; +identifier mod_init_fn.MOD_VAR; +expression MODULE_NAME, MODULE_METHODS, MODULE_DOC; +@@ + #if PY_MAJOR_VERSION >= 3 +static struct PyModuleDef moduledef = { + PyModuleDef_HEAD_INIT, @@ -16,7 +28,9 @@ expression MODULE_NAME, MODULE_METHODS, MODULE_DOC; + NULL, /* m_clear */ + NULL, /* m_free */ +}; -+ #endif ++#define MOD_ERROR_VAL NULL ++#else ++#endif T FN(void) { ... @@ -29,3 +43,30 @@ T FN(void) { ... } + + + +@@ +type mod_init_fn.T; +identifier mod_init_fn.FN; +expression E; +@@ +T FN(void) { + ... +- if (E) return; ++ if (E) return MOD_ERROR_VAL; + ... +} + +@@ +type mod_init_fn.T; +identifier mod_init_fn.FN; +identifier mod_init_fn.MOD_VAR; +@@ +T FN(void) { + ... +- return; ++ #if PY_MAJOR_VERSION >= 3 ++ return MOD_VAR; ++ #endif +} |