mirror of
https://github.com/python/cpython.git
synced 2025-08-28 12:45:07 +00:00
Fix Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
Needs backport.
This commit is contained in:
parent
e7214a130b
commit
db83eb3170
5 changed files with 19 additions and 2 deletions
2
Lib/test/bad_coding2.py
Normal file
2
Lib/test/bad_coding2.py
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
#coding: utf8
|
||||||
|
print '我'
|
|
@ -5,6 +5,13 @@ import os
|
||||||
class CodingTest(unittest.TestCase):
|
class CodingTest(unittest.TestCase):
|
||||||
def test_bad_coding(self):
|
def test_bad_coding(self):
|
||||||
module_name = 'bad_coding'
|
module_name = 'bad_coding'
|
||||||
|
self.verify_bad_module(module_name)
|
||||||
|
|
||||||
|
def test_bad_coding2(self):
|
||||||
|
module_name = 'bad_coding2'
|
||||||
|
self.verify_bad_module(module_name)
|
||||||
|
|
||||||
|
def verify_bad_module(self, module_name):
|
||||||
self.assertRaises(SyntaxError, __import__, 'test.' + module_name)
|
self.assertRaises(SyntaxError, __import__, 'test.' + module_name)
|
||||||
|
|
||||||
path = os.path.dirname(__file__)
|
path = os.path.dirname(__file__)
|
||||||
|
|
|
@ -12,6 +12,8 @@ What's New in Python 2.5 alpha 1?
|
||||||
Core and builtins
|
Core and builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Bug #1378022, UTF-8 files with a leading BOM crashed the interpreter.
|
||||||
|
|
||||||
- Support for converting hex strings to floats no longer works.
|
- Support for converting hex strings to floats no longer works.
|
||||||
This was not portable. float('0x3') now raises a ValueError.
|
This was not portable. float('0x3') now raises a ValueError.
|
||||||
|
|
||||||
|
|
|
@ -292,6 +292,12 @@ check_coding_spec(const char* line, int size, struct tok_state *tok,
|
||||||
PyMem_DEL(cs);
|
PyMem_DEL(cs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!r) {
|
||||||
|
cs = tok->encoding;
|
||||||
|
if (!cs)
|
||||||
|
cs = "with BOM";
|
||||||
|
PyErr_Format(PyExc_SyntaxError, "encoding problem: %s", cs);
|
||||||
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1439,8 +1439,8 @@ err_input(perrdetail *err)
|
||||||
}
|
}
|
||||||
if (msg == NULL)
|
if (msg == NULL)
|
||||||
msg = "unknown decode error";
|
msg = "unknown decode error";
|
||||||
Py_DECREF(type);
|
Py_XDECREF(type);
|
||||||
Py_DECREF(value);
|
Py_XDECREF(value);
|
||||||
Py_XDECREF(tb);
|
Py_XDECREF(tb);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue