[Libreoffice-commits] core.git: external/hunspell

Stephan Bergmann sbergman at redhat.com
Tue Jan 13 03:32:29 PST 2015


 external/hunspell/ubsan.patch.0 |   24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

New commits:
commit 4cd1c4cb41316e16996a92695d86ac1d956d7e07
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue Jan 13 12:31:53 2015 +0100

    external/hunspell: Work around -fsanitize=shift
    
    Change-Id: I66ac6ec25615698382d065db2b782950cbc154e4

diff --git a/external/hunspell/ubsan.patch.0 b/external/hunspell/ubsan.patch.0
index 8749cd9..b52802d 100644
--- a/external/hunspell/ubsan.patch.0
+++ b/external/hunspell/ubsan.patch.0
@@ -9,3 +9,27 @@
      for (int i=0; i < 4  &&  *word != 0; i++)
          hv = (hv << 8) | (*word++);
      while (*word != 0) {
+--- src/hunspell/csutil.cxx
++++ src/hunspell/csutil.cxx
+@@ -147,7 +147,7 @@
+         case 0xd0: {    // 2-byte UTF-8 codes
+             if ((*(u8+1) & 0xc0) == 0x80) {
+                 u2->h = (*u8 & 0x1f) >> 2;
+-                u2->l = (*u8 << 6) + (*(u8+1) & 0x3f);
++                u2->l = (*reinterpret_cast<unsigned char const *>(u8) << 6) + (*(u8+1) & 0x3f);
+                 u8++;
+             } else {
+                 HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing continuation byte in %ld. character position:\n%s\n", static_cast<long>(u8 - (signed char *)src), src);
+@@ -158,10 +158,10 @@
+         }
+         case 0xe0: {    // 3-byte UTF-8 codes
+             if ((*(u8+1) & 0xc0) == 0x80) {
+-                u2->h = ((*u8 & 0x0f) << 4) + ((*(u8+1) & 0x3f) >> 2);
++                u2->h = ((*reinterpret_cast<unsigned char const *>(u8) & 0x0f) << 4) + ((*(u8+1) & 0x3f) >> 2);
+                 u8++;
+                 if ((*(u8+1) & 0xc0) == 0x80) {
+-                    u2->l = (*u8 << 6) + (*(u8+1) & 0x3f);
++                    u2->l = (*reinterpret_cast<unsigned char const *>(u8) << 6) + (*(u8+1) & 0x3f);
+                     u8++;
+                 } else {
+                     HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing continuation byte in %ld. character position:\n%s\n", static_cast<long>(u8 - (signed char *)src), src);


More information about the Libreoffice-commits mailing list