summaryrefslogtreecommitdiff
path: root/Modules/_localemodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/_localemodule.c')
-rw-r--r--Modules/_localemodule.c56
1 files changed, 21 insertions, 35 deletions
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index b1307ef26b..feb3802900 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -49,7 +49,7 @@ PyDoc_STRVAR(setlocale__doc__,
/* the grouping is terminated by either 0 or CHAR_MAX */
static PyObject*
-copy_grouping(char* s)
+copy_grouping(const char* s)
{
int i;
PyObject *result, *val = NULL;
@@ -622,53 +622,34 @@ static struct PyModuleDef _localemodule = {
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;
-
- d = PyModule_GetDict(m);
-
- x = PyLong_FromLong(LC_CTYPE);
- PyDict_SetItemString(d, "LC_CTYPE", x);
- Py_XDECREF(x);
-
- x = PyLong_FromLong(LC_TIME);
- PyDict_SetItemString(d, "LC_TIME", x);
- Py_XDECREF(x);
-
- x = PyLong_FromLong(LC_COLLATE);
- PyDict_SetItemString(d, "LC_COLLATE", x);
- Py_XDECREF(x);
+ return NULL;
- x = PyLong_FromLong(LC_MONETARY);
- PyDict_SetItemString(d, "LC_MONETARY", x);
- Py_XDECREF(x);
+ PyModule_AddIntMacro(m, LC_CTYPE);
+ PyModule_AddIntMacro(m, LC_TIME);
+ PyModule_AddIntMacro(m, LC_COLLATE);
+ PyModule_AddIntMacro(m, LC_MONETARY);
#ifdef LC_MESSAGES
- x = PyLong_FromLong(LC_MESSAGES);
- PyDict_SetItemString(d, "LC_MESSAGES", x);
- Py_XDECREF(x);
+ PyModule_AddIntMacro(m, LC_MESSAGES);
#endif /* LC_MESSAGES */
- x = PyLong_FromLong(LC_NUMERIC);
- PyDict_SetItemString(d, "LC_NUMERIC", x);
- Py_XDECREF(x);
-
- 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);
+ PyModule_AddIntMacro(m, LC_NUMERIC);
+ PyModule_AddIntMacro(m, LC_ALL);
+ PyModule_AddIntMacro(m, CHAR_MAX);
Error = PyErr_NewException("locale.Error", NULL, NULL);
- PyDict_SetItemString(d, "Error", Error);
+ if (Error == NULL) {
+ Py_DECREF(m);
+ return NULL;
+ }
+ PyModule_AddObject(m, "Error", Error);
#ifdef HAVE_LANGINFO_H
for (i = 0; langinfo_constants[i].name; i++) {
@@ -676,6 +657,11 @@ PyInit__locale(void)
langinfo_constants[i].value);
}
#endif
+
+ if (PyErr_Occurred()) {
+ Py_DECREF(m);
+ return NULL;
+ }
return m;
}