From c3a87b8dbbbcc069a58bcbbb0fb5f07858178bca Mon Sep 17 00:00:00 2001 From: Hye-Shik Chang Date: Sun, 21 Mar 2004 19:34:30 +0000 Subject: [PATCH] Bug #920575: Add a workaround for GNU libc nl_langinfo()'s returning NULL. (Reported by Matthias Klose) --- Misc/NEWS | 3 +++ Modules/_localemodule.c | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index c0e2afe6ee3..dfb64322f80 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -193,6 +193,9 @@ Core and builtins Extension modules ----------------- +- Bug #920575: A problem that _locale module segfaults on + nl_langinfo(ERA) caused by GNU libc's illegal NULL return is fixed. + - array objects now support the copy module. Also, their resizing scheme has been updated the same as for list objects. The improves the performance (speed and memory usage) of append() operations. diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 2cfda880f2c..5edb7f378de 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; }