From: Hye-Shik Chang Date: Sun, 21 Mar 2004 19:53:59 +0000 (+0000) Subject: Backport checkin: X-Git-Tag: v2.3.4c1~98 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=07bc3a3db8fe55b597032363d8ead375abfa6ae1;p=thirdparty%2FPython%2Fcpython.git Backport checkin: [Bug #920575] Add a workaround for GNU libc nl_langinfo()'s returning NULL. --- diff --git a/Misc/NEWS b/Misc/NEWS index 448e6c8775db..1cbfda33b194 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -38,6 +38,9 @@ Core and builtins Library ------- +- Bug #920575: A problem that _locale module segfaults on + nl_langinfo(ERA) caused by GNU libc's illegal NULL return is fixed. + - Bug #883604: Fix Lib/test/test_strftime.py to escape characters from locale time values that might be mistaken as regex syntax. diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 5862c1e59b19..363a823f3df1 100644 --- a/Modules/_localemodule.c +++ b/Modules/_localemodule.c @@ -592,8 +592,12 @@ PyLocale_nl_langinfo(PyObject* self, PyObject* args) } #endif for (i = 0; langinfo_constants[i].name; i++) - if (langinfo_constants[i].value == item) - return PyString_FromString(nl_langinfo(item)); + if (langinfo_constants[i].value == item) { + /* 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); + return PyString_FromString(result != NULL ? result : ""); + } PyErr_SetString(PyExc_ValueError, "unsupported langinfo constant"); return NULL; }