@@ -621,60 +621,46 @@ static struct PyModuleDef _localemodule = {
621621PyMODINIT_FUNC
622622PyInit__locale (void )
623623{
624- PyObject * m , * d , * x ;
624+ PyObject * m ;
625625#ifdef HAVE_LANGINFO_H
626626 int i ;
627627#endif
628628
629629 m = PyModule_Create (& _localemodule );
630630 if (m == NULL )
631- return NULL ;
632-
633- d = PyModule_GetDict (m );
634-
635- x = PyLong_FromLong (LC_CTYPE );
636- PyDict_SetItemString (d , "LC_CTYPE" , x );
637- Py_XDECREF (x );
638-
639- x = PyLong_FromLong (LC_TIME );
640- PyDict_SetItemString (d , "LC_TIME" , x );
641- Py_XDECREF (x );
642-
643- x = PyLong_FromLong (LC_COLLATE );
644- PyDict_SetItemString (d , "LC_COLLATE" , x );
645- Py_XDECREF (x );
631+ return NULL ;
646632
647- x = PyLong_FromLong (LC_MONETARY );
648- PyDict_SetItemString (d , "LC_MONETARY" , x );
649- Py_XDECREF (x );
633+ PyModule_AddIntMacro (m , LC_CTYPE );
634+ PyModule_AddIntMacro (m , LC_TIME );
635+ PyModule_AddIntMacro (m , LC_COLLATE );
636+ PyModule_AddIntMacro (m , LC_MONETARY );
650637
651638#ifdef LC_MESSAGES
652- x = PyLong_FromLong (LC_MESSAGES );
653- PyDict_SetItemString (d , "LC_MESSAGES" , x );
654- Py_XDECREF (x );
639+ PyModule_AddIntMacro (m , LC_MESSAGES );
655640#endif /* LC_MESSAGES */
656641
657- x = PyLong_FromLong (LC_NUMERIC );
658- PyDict_SetItemString (d , "LC_NUMERIC" , x );
659- Py_XDECREF (x );
660-
661- x = PyLong_FromLong (LC_ALL );
662- PyDict_SetItemString (d , "LC_ALL" , x );
663- Py_XDECREF (x );
664-
665- x = PyLong_FromLong (CHAR_MAX );
666- PyDict_SetItemString (d , "CHAR_MAX" , x );
667- Py_XDECREF (x );
642+ PyModule_AddIntMacro (m , LC_NUMERIC );
643+ PyModule_AddIntMacro (m , LC_ALL );
644+ PyModule_AddIntMacro (m , CHAR_MAX );
668645
669646 Error = PyErr_NewException ("locale.Error" , NULL , NULL );
670- PyDict_SetItemString (d , "Error" , Error );
647+ if (Error == NULL ) {
648+ Py_DECREF (m );
649+ return NULL ;
650+ }
651+ PyModule_AddObject (m , "Error" , Error );
671652
672653#ifdef HAVE_LANGINFO_H
673654 for (i = 0 ; langinfo_constants [i ].name ; i ++ ) {
674655 PyModule_AddIntConstant (m , langinfo_constants [i ].name ,
675656 langinfo_constants [i ].value );
676657 }
677658#endif
659+
660+ if (PyErr_Occurred ()) {
661+ Py_DECREF (m );
662+ return NULL ;
663+ }
678664 return m ;
679665}
680666
0 commit comments