]> granicus.if.org Git - clang/commitdiff
[clang] Fix a bug that reports UTF32 (LE) files as UTF16 (LE) ones
authorOwen Pan <owenpiano@gmail.com>
Wed, 8 May 2019 13:49:17 +0000 (13:49 +0000)
committerOwen Pan <owenpiano@gmail.com>
Wed, 8 May 2019 13:49:17 +0000 (13:49 +0000)
Also fix a typo for the SCSU byte order mark.

Differential Revision: https://reviews.llvm.org/D61628

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@360256 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/SourceManager.cpp

index 1b139c655238281709ee768e9056a651f6e6ce26..0ffad1bc475f2d97cec8010155edfdac2224be03 100644 (file)
@@ -167,16 +167,16 @@ const llvm::MemoryBuffer *ContentCache::getBuffer(DiagnosticsEngine &Diag,
   // http://en.wikipedia.org/wiki/Byte_order_mark for more information.
   StringRef BufStr = Buffer.getPointer()->getBuffer();
   const char *InvalidBOM = llvm::StringSwitch<const char *>(BufStr)
-    .StartsWith("\xFE\xFF", "UTF-16 (BE)")
-    .StartsWith("\xFF\xFE", "UTF-16 (LE)")
     .StartsWith(llvm::StringLiteral::withInnerNUL("\x00\x00\xFE\xFF"),
                                                   "UTF-32 (BE)")
     .StartsWith(llvm::StringLiteral::withInnerNUL("\xFF\xFE\x00\x00"),
                                                   "UTF-32 (LE)")
+    .StartsWith("\xFE\xFF", "UTF-16 (BE)")
+    .StartsWith("\xFF\xFE", "UTF-16 (LE)")
     .StartsWith("\x2B\x2F\x76", "UTF-7")
     .StartsWith("\xF7\x64\x4C", "UTF-1")
     .StartsWith("\xDD\x73\x66\x73", "UTF-EBCDIC")
-    .StartsWith("\x0E\xFE\xFF", "SDSU")
+    .StartsWith("\x0E\xFE\xFF", "SCSU")
     .StartsWith("\xFB\xEE\x28", "BOCU-1")
     .StartsWith("\x84\x31\x95\x33", "GB-18030")
     .Default(nullptr);