summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_localemodule.c6
-rw-r--r--Modules/pwdmodule.c7
2 files changed, 9 insertions, 4 deletions
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index 7c816ff..f9c48e1 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -143,7 +143,7 @@ PyLocale_localeconv(PyObject* self)
involved herein */
#define RESULT_STRING(s)\
- x = PyUnicode_FromString(l->s);\
+ x = PyUnicode_DecodeUnicodeEscape(l->s, strlen(l->s), "strict");\
if (!x) goto failed;\
PyDict_SetItemString(result, #s, x);\
Py_XDECREF(x)
@@ -471,8 +471,10 @@ PyLocale_nl_langinfo(PyObject* self, PyObject* args)
/* Check NULL as a workaround for GNU libc's returning NULL
instead of an empty string for nl_langinfo(ERA). */
const char *result = nl_langinfo(item);
+ result = result != NULL ? result : "";
/* XXX may have to convert this to wcs first. */
- return PyUnicode_FromString(result != NULL ? result : "");
+ return PyUnicode_DecodeUnicodeEscape(result, strlen(result),
+ "strict");
}
PyErr_SetString(PyExc_ValueError, "unsupported langinfo constant");
return NULL;
diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c
index ea8c19c..57f69e7 100644
--- a/Modules/pwdmodule.c
+++ b/Modules/pwdmodule.c
@@ -48,8 +48,11 @@ static PyTypeObject StructPwdType;
static void
sets(PyObject *v, int i, const char* val)
{
- if (val)
- PyStructSequence_SET_ITEM(v, i, PyUnicode_FromString(val));
+ if (val) {
+ PyObject *o =
+ PyUnicode_DecodeUnicodeEscape(val, strlen(val), "strict");
+ PyStructSequence_SET_ITEM(v, i, o);
+ }
else {
PyStructSequence_SET_ITEM(v, i, Py_None);
Py_INCREF(Py_None);