diff --git a/integration_test.py b/integration_test.py index 3ca2fd02..e1121014 100644 --- a/integration_test.py +++ b/integration_test.py @@ -502,4 +502,17 @@ def test_define(record_property, tmpdir): # #589 assert exitcode == 0 assert stderr == "test.cpp:1: syntax error: failed to expand 'TEST_P', Invalid ## usage when expanding 'TEST_P': Unexpected token ')'\n" - assert stdout == '\n' \ No newline at end of file + assert stdout == '\n' + +def test_utf16_bom(tmpdir): + test_file = os.path.join(tmpdir, "test.cpp") + with open(test_file, 'w') as f: + f.write("\xFF\xFE\x00\x3B") + + args = [test_file] + + exitcode, stdout, stderr = simplecpp(args, cwd=tmpdir) + + assert exitcode == 0 + assert stderr == '' + assert stdout == '\n' diff --git a/simplecpp.cpp b/simplecpp.cpp index 7afc17ab..66fe9ebc 100644 --- a/simplecpp.cpp +++ b/simplecpp.cpp @@ -276,7 +276,10 @@ class simplecpp::TokenList::Stream { } unsigned char peekChar() { - auto ch = static_cast(peek()); + const int pk = peek(); + auto ch = static_cast(pk); + //if (pk == EOF) + //return ch; // For UTF-16 encoded files the BOM is 0xfeff/0xfffe. If the // character is non-ASCII character then replace it with 0xff