diff options
author | Maxim Monastirsky <momonasmon@gmail.com> | 2013-12-05 17:56:17 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2013-12-08 23:50:07 +0000 |
commit | f38277dc0337df15f3ea689096a2c18a03354a61 (patch) | |
tree | 38ba12d566866d11c69d205e5e7f26a0bd0f1399 | |
parent | 378d71201bc1fedf9f602ceaef8c68ab51a29dd6 (diff) |
fdo#46262 Detect XML files with UTF-8 BOM
Also convert sal_Char (deprecated) -> char
Change-Id: Ibf66f6a9ea751bab96f43671fe95a835c073d9e0
Reviewed-on: https://gerrit.libreoffice.org/6942
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Tested-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | filter/source/xmlfilterdetect/filterdetect.cxx | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/filter/source/xmlfilterdetect/filterdetect.cxx b/filter/source/xmlfilterdetect/filterdetect.cxx index 60681d2d4343..27f173afaa80 100644 --- a/filter/source/xmlfilterdetect/filterdetect.cxx +++ b/filter/source/xmlfilterdetect/filterdetect.cxx @@ -78,10 +78,24 @@ bool isXMLStream(const OString& aHeaderStrm) size_t n = aHeaderStrm.getLength(); size_t i = 0; + // Skip UTF-8 BOM + const char sBOM[] = {(char)0xEF, (char)0xBB, (char)0xBF}; + for (i = 0; i < n; ++i, ++p) + { + if (i < 3 && *p == sBOM[i]) + continue; + else if (i == 3 || i == 0) + break; + else if (i > 0) + return false; + } + + n -= i; + // Skip all preceding blank characters. for (i = 0; i < n; ++i, ++p) { - sal_Char c = *p; + char c = *p; if (c == ' ' || c == '\n' || c == '\t') continue; break; |