summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Monastirsky <momonasmon@gmail.com>2013-12-05 17:56:17 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2013-12-08 23:50:07 +0000
commitf38277dc0337df15f3ea689096a2c18a03354a61 (patch)
tree38ba12d566866d11c69d205e5e7f26a0bd0f1399
parent378d71201bc1fedf9f602ceaef8c68ab51a29dd6 (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.cxx16
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;