#! -*- coding: koi8-r -*-\r
-# This file is marked as binary in the CVS, to prevent MacCVS from recoding it.\r
+# This file is marked as binary in SVN, to prevent MacCVS from recoding it.\r
\r
import unittest\r
from test import test_support\r
'\\\xd0\x9f'\r
)\r
\r
+ def test_compilestring(self):\r
+ # see #1882\r
+ c = compile("\n# coding: utf-8\nu = u'\xc3\xb3'\n", "dummy", "exec")\r
+ d = {}\r
+ exec c in d\r
+ self.assertEqual(d['u'], u'\xf3')\r
+\r
+\r
def test_main():\r
test_support.run_unittest(PEP263Test)\r
\r
{
PyObject* utf8 = NULL;
const char *s;
+ char *newl[2] = {NULL, NULL};
int lineno = 0;
tok->enc = NULL;
tok->str = str;
for (s = str;; s++) {
if (*s == '\0') break;
else if (*s == '\n') {
+ newl[lineno] = s;
lineno++;
if (lineno == 2) break;
}
}
tok->enc = NULL;
- if (!check_coding_spec(str, s - str, tok, buf_setreadl))
- return error_ret(tok);
+ /* need to check line 1 and 2 separately since check_coding_spec
+ assumes a single line as input */
+ if (newl[0]) {
+ if (!check_coding_spec(str, newl[0] - str, tok, buf_setreadl))
+ return error_ret(tok);
+ if (tok->enc == NULL && newl[1]) {
+ if (!check_coding_spec(newl[0]+1, newl[1] - newl[0],
+ tok, buf_setreadl))
+ return error_ret(tok);
+ }
+ }
#ifdef Py_USING_UNICODE
if (tok->enc != NULL) {
assert(utf8 == NULL);