src/lib/CDRParser.cpp |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

New commits:
commit 0d36bda438c8c1e33ef9aada24a65d8bb8107c6c
Author:     Fridrich Štrba <fridrich.st...@bluewin.ch>
AuthorDate: Mon Mar 22 13:19:35 2021 +0100
Commit:     Fridrich Štrba <fridrich.st...@bluewin.ch>
CommitDate: Mon Mar 22 13:20:04 2021 +0100

    use the iso8859_1 to parse colours
    
    The standard parser chokes on some characters due to conversion of
    codes >127 into negative numbers
    
    Change-Id: I3e5ac008376997c0b9b657016c293d5702bf75ec

diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index 36b6aff..62bdf0d 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -105,6 +105,7 @@ static void processNameForEncoding(librevenge::RVNGString 
&name, unsigned short
 static int parseColourString(const char *colourString, libcdr::CDRColor 
&colour, double &opacity)
 {
   using namespace boost::spirit::qi;
+
   bool bRes = false;
 
   boost::optional<unsigned> colourModel, colourPalette;
@@ -146,14 +147,14 @@ static int parseColourString(const char *colourString, 
libcdr::CDRColor &colour,
     bRes = phrase_parse(it, end,
                         //  Begin grammar
                         (
-                          (cmodel | omit[+alnum]) >> lit(',')
-                          >> (cpalette | omit[+alnum]) >> lit(',')
+                          (cmodel | omit[+iso8859_1::alnum]) >> lit(',')
+                          >> (cpalette | omit[+iso8859_1::alnum]) >> lit(',')
                           >> *(uint_ >> lit(','))
-                          >> omit[(repeat(8)[xdigit] >> '-' >> 
repeat(3)[repeat(4)[xdigit] >> '-'] >> repeat(12)[xdigit])]
-                          >> -(lit(',') >> *char_)
+                          >> omit[(repeat(8)[iso8859_1::xdigit] >> '-' >> 
repeat(3)[repeat(4)[iso8859_1::xdigit] >> '-'] >> 
repeat(12)[iso8859_1::xdigit])]
+                          >> -(lit(',') >> *iso8859_1::char_)
                         ),
                         //  End grammar
-                        space,
+                        iso8859_1::space,
                         colourModel, colourPalette, val, rest)
            && it == end;
   }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to