[Libreoffice-commits] .: vcl/ios

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Mon Sep 3 23:49:59 PDT 2012


 vcl/ios/source/gdi/salcoretextlayout.cxx |   13 +++++++++++++
 1 file changed, 13 insertions(+)

New commits:
commit 8951ef03b9e99ce468d063c2793a724558af27dc
Author: Tor Lillqvist <tml at iki.fi>
Date:   Tue Sep 4 09:40:57 2012 +0300

    Workaround for crash on iOS
    
    Change-Id: I947f7def862d2a238dc609a91d898f03dbd72b84

diff --git a/vcl/ios/source/gdi/salcoretextlayout.cxx b/vcl/ios/source/gdi/salcoretextlayout.cxx
index 99151e8..ff6552f 100644
--- a/vcl/ios/source/gdi/salcoretextlayout.cxx
+++ b/vcl/ios/source/gdi/salcoretextlayout.cxx
@@ -421,6 +421,19 @@ bool CoreTextLayout::LayoutText(ImplLayoutArgs& args)
     {
         return false;
     }
+
+    // If the string contains U+FFFD ("REPLACEMENT CHARACTER"), which
+    // happens at least for the ooo80484-1.slk document in
+    // sc_filters_test, the CTTypesetterCreateWithAttributedString()
+    // call below crashes, at least in the iOS simulator. Go figure.
+    // (In that case the string consists of *only* such characters,
+    // but play it safe.
+    for (int i = 0; i < m_chars_count; i++)
+    {
+        if (args.mpStr[args.mnMinCharPos+i] == 0xFFFD)
+            return false;
+    }
+
     /* c0 and c1 are construction objects */
     CFStringRef c0 = CFStringCreateWithCharactersNoCopy( NULL, &(args.mpStr[args.mnMinCharPos]), m_chars_count, kCFAllocatorNull );
     if ( !c0 )


More information about the Libreoffice-commits mailing list