mirror of
https://github.com/python/cpython.git
synced 2025-11-17 01:25:57 +00:00
Merged revisions 76626 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
................
r76626 | amaury.forgeotdarc | 2009-12-01 22:59:18 +0100 (mar., 01 déc. 2009) | 10 lines
Merged revisions 76625 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r76625 | amaury.forgeotdarc | 2009-12-01 22:51:04 +0100 (mar., 01 déc. 2009) | 3 lines
#7419: Fix a crash on Windows in locale.setlocale() when the category
is outside the allowed range.
........
................
This commit is contained in:
parent
6c8ee7a333
commit
ea315ac8f4
3 changed files with 22 additions and 0 deletions
|
|
@ -353,6 +353,17 @@ class TestMiscellaneous(unittest.TestCase):
|
||||||
self.assertRaises(TypeError, locale.strcoll, "a", None)
|
self.assertRaises(TypeError, locale.strcoll, "a", None)
|
||||||
self.assertRaises(TypeError, locale.strcoll, b"a", None)
|
self.assertRaises(TypeError, locale.strcoll, b"a", None)
|
||||||
|
|
||||||
|
def test_setlocale_category(self):
|
||||||
|
locale.setlocale(locale.LC_ALL)
|
||||||
|
locale.setlocale(locale.LC_TIME)
|
||||||
|
locale.setlocale(locale.LC_CTYPE)
|
||||||
|
locale.setlocale(locale.LC_COLLATE)
|
||||||
|
locale.setlocale(locale.LC_MONETARY)
|
||||||
|
locale.setlocale(locale.LC_NUMERIC)
|
||||||
|
|
||||||
|
# crasher from bug #7419
|
||||||
|
self.assertRaises(locale.Error, locale.setlocale, 12345)
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
tests = [
|
tests = [
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,9 @@ What's New in Python 3.1.2?
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #7419: setlocale() could crash the interpreter on Windows when called
|
||||||
|
with invalid values.
|
||||||
|
|
||||||
- Issue #6077: On Windows, files opened with tempfile.TemporaryFile in "wt+"
|
- Issue #6077: On Windows, files opened with tempfile.TemporaryFile in "wt+"
|
||||||
mode would appear truncated on the first '0x1a' byte (aka. Ctrl+Z).
|
mode would appear truncated on the first '0x1a' byte (aka. Ctrl+Z).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,14 @@ PyLocale_setlocale(PyObject* self, PyObject* args)
|
||||||
if (!PyArg_ParseTuple(args, "i|z:setlocale", &category, &locale))
|
if (!PyArg_ParseTuple(args, "i|z:setlocale", &category, &locale))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
#if defined(MS_WINDOWS)
|
||||||
|
if (category < LC_MIN || category > LC_MAX)
|
||||||
|
{
|
||||||
|
PyErr_SetString(Error, "invalid locale category");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (locale) {
|
if (locale) {
|
||||||
/* set locale */
|
/* set locale */
|
||||||
result = setlocale(category, locale);
|
result = setlocale(category, locale);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue