]> granicus.if.org Git - python/commitdiff
Get the locale and pwd tests working on the Solaris box where there
authorNeal Norwitz <nnorwitz@gmail.com>
Sat, 27 Oct 2007 05:40:06 +0000 (05:40 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Sat, 27 Oct 2007 05:40:06 +0000 (05:40 +0000)
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
Modules/pwdmodule.c

index 7c816ff3e3adfceb1d9cc31c6fbcb66886ea776a..f9c48e10f4916a7f4231bac08317ba7a3745f39b 100644 (file)
@@ -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;
index ea8c19cfd14838cdb8d372d125903c4932322fea..57f69e7c50df21b6881cd19cd0d7ad90ed508243 100644 (file)
@@ -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);