aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Modules/cjkcodecs/cjkcodecs.h
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/cjkcodecs/cjkcodecs.h')
-rw-r--r--Modules/cjkcodecs/cjkcodecs.h26
1 files changed, 21 insertions, 5 deletions
diff --git a/Modules/cjkcodecs/cjkcodecs.h b/Modules/cjkcodecs/cjkcodecs.h
index 7e8390a2d11..ab0682a9fa9 100644
--- a/Modules/cjkcodecs/cjkcodecs.h
+++ b/Modules/cjkcodecs/cjkcodecs.h
@@ -239,6 +239,8 @@ static const struct dbcs_map *mapping_list;
static const MultibyteCodec *codec_list = \
(const MultibyteCodec *)_codec_list;
+
+
static PyObject *
getmultibytecodec(void)
{
@@ -261,17 +263,19 @@ getcodec(PyObject *self, PyObject *encoding)
const MultibyteCodec *codec;
const char *enc;
- if (!PyString_Check(encoding)) {
+ if (!PyUnicode_Check(encoding)) {
PyErr_SetString(PyExc_TypeError,
"encoding name must be a string.");
return NULL;
}
+ enc = _PyUnicode_AsString(encoding);
+ if (enc == NULL)
+ return NULL;
cofunc = getmultibytecodec();
if (cofunc == NULL)
return NULL;
- enc = PyString_AS_STRING(encoding);
for (codec = codec_list; codec->encoding[0]; codec++)
if (strcmp(codec->encoding, enc) == 0)
break;
@@ -387,12 +391,24 @@ errorexit:
#endif
#define I_AM_A_MODULE_FOR(loc) \
- void \
- init_codecs_##loc(void) \
+ static struct PyModuleDef __module = { \
+ PyModuleDef_HEAD_INIT, \
+ "_codecs_"#loc, \
+ NULL, \
+ 0, \
+ __methods, \
+ NULL, \
+ NULL, \
+ NULL, \
+ NULL \
+ }; \
+ PyObject* \
+ PyInit__codecs_##loc(void) \
{ \
- PyObject *m = Py_InitModule("_codecs_" #loc, __methods);\
+ PyObject *m = PyModule_Create(&__module); \
if (m != NULL) \
(void)register_maps(m); \
+ return m; \
}
#endif