diff -r 4aab4e0cd759 Modules/_localemodule.c --- a/Modules/_localemodule.c Sun Apr 19 21:13:00 2015 +0300 +++ b/Modules/_localemodule.c Sun Apr 19 21:12:57 2015 +0200 @@ -621,61 +621,58 @@ PyMODINIT_FUNC PyInit__locale(void) { - PyObject *m, *d, *x; + PyObject *m; #ifdef HAVE_LANGINFO_H int i; #endif m = PyModule_Create(&_localemodule); if (m == NULL) - return NULL; + return NULL; - d = PyModule_GetDict(m); + if (PyModule_AddIntMacro(m, LC_CTYPE)) + goto error; - x = PyLong_FromLong(LC_CTYPE); - PyDict_SetItemString(d, "LC_CTYPE", x); - Py_XDECREF(x); + if (PyModule_AddIntMacro(m, LC_TIME)) + goto error; - x = PyLong_FromLong(LC_TIME); - PyDict_SetItemString(d, "LC_TIME", x); - Py_XDECREF(x); + if (PyModule_AddIntMacro(m, LC_COLLATE)) + goto error; - x = PyLong_FromLong(LC_COLLATE); - PyDict_SetItemString(d, "LC_COLLATE", x); - Py_XDECREF(x); - - x = PyLong_FromLong(LC_MONETARY); - PyDict_SetItemString(d, "LC_MONETARY", x); - Py_XDECREF(x); + if (PyModule_AddIntMacro(m, LC_MONETARY)) + goto error; #ifdef LC_MESSAGES - x = PyLong_FromLong(LC_MESSAGES); - PyDict_SetItemString(d, "LC_MESSAGES", x); - Py_XDECREF(x); + if (PyModule_AddIntMacro(m, LC_MESSAGES)) + goto error; #endif /* LC_MESSAGES */ - x = PyLong_FromLong(LC_NUMERIC); - PyDict_SetItemString(d, "LC_NUMERIC", x); - Py_XDECREF(x); + if (PyModule_AddIntMacro(m, LC_NUMERIC)) + goto error; - x = PyLong_FromLong(LC_ALL); - PyDict_SetItemString(d, "LC_ALL", x); - Py_XDECREF(x); - - x = PyLong_FromLong(CHAR_MAX); - PyDict_SetItemString(d, "CHAR_MAX", x); - Py_XDECREF(x); + if (PyModule_AddIntMacro(m, LC_ALL)) + goto error; + + if (PyModule_AddIntMacro(m, CHAR_MAX)) + goto error; Error = PyErr_NewException("locale.Error", NULL, NULL); - PyDict_SetItemString(d, "Error", Error); + if (PyModule_AddObject(m, "Error", Error)) + goto error; #ifdef HAVE_LANGINFO_H for (i = 0; langinfo_constants[i].name; i++) { - PyModule_AddIntConstant(m, langinfo_constants[i].name, - langinfo_constants[i].value); + if (PyModule_AddIntConstant(m, + langinfo_constants[i].name, + langinfo_constants[i].value)) + goto error; } #endif return m; + + error: + Py_DECREF(m); + return NULL; } /*