From 3d7a90dea101021f846173b03b3d0a9c25a9d6b1 Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Sat, 27 Oct 2007 05:40:06 +0000 Subject: [PATCH] Get the locale and pwd tests working on the Solaris box where there are some unicode values used. I'm not sure if this is the correct on all operating systems, but this works on Linux w/o unicode. --- Modules/_localemodule.c | 6 ++++-- Modules/pwdmodule.c | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 7c816ff3e3ad..f9c48e10f491 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 ea8c19cfd148..57f69e7c50df 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); -- 2.47.3