Bug #920575: Add a workaround for GNU libc nl_langinfo()'s returning NULL.
(Reported by Matthias Klose)
This commit is contained in:
parent
56d7913bae
commit
c3a87b8dbb
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue