diff -r c6892ce7e56f Modules/_localemodule.c --- a/Modules/_localemodule.c Mon Sep 17 09:01:03 2012 +0200 +++ b/Modules/_localemodule.c Mon Sep 17 14:32:33 2012 +0300 @@ -254,7 +254,12 @@ PyErr_NoMemory(); goto exit; } + errno = 0; n2 = wcsxfrm(buf, s, n1); + if (errno) { + PyErr_SetFromErrno(PyExc_OSError); + goto exit; + } if (n2 >= (size_t)n1) { /* more space needed */ wchar_t * new_buf = PyMem_Realloc(buf, (n2+1)*sizeof(wchar_t)); @@ -263,7 +268,12 @@ goto exit; } buf = new_buf; + errno = 0; n2 = wcsxfrm(buf, s, n2+1); + if (errno) { + PyErr_SetFromErrno(PyExc_OSError); + goto exit; + } } result = PyUnicode_FromWideChar(buf, n2); exit: