[Libreoffice-commits] core.git: 2 commits - bridges/source

Tor Lillqvist tml at collabora.com
Thu Dec 26 05:53:50 PST 2013


 bridges/source/cpp_uno/gcc3_ios_arm/except.cxx |    6 ++++++
 1 file changed, 6 insertions(+)

New commits:
commit 95d5922c0290ecd9de17183a95c068592a2c5a4f
Author: Tor Lillqvist <tml at collabora.com>
Date:   Thu Dec 26 14:20:05 2013 +0200

    Add static assertion that our Fake_type_info is the same size as the real one
    
    Change-Id: Id8490bb6373d85be2c529a005be55295c530febb

diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx
index e431590..22026cc 100644
--- a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx
+++ b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx
@@ -52,6 +52,9 @@ struct Fake_type_info {
     char const * name;
 };
 
+BOOST_STATIC_ASSERT(
+    sizeof (Fake_type_info) == sizeof (std::type_info));
+
 struct Fake_class_type_info: Fake_type_info {};
 
 #if defined(MACOSX) && MACOSX_SDK_VERSION < 1070
commit 96af0825ab0d3d36df25a3983f9f422e987cb572
Author: Tor Lillqvist <tml at collabora.com>
Date:   Thu Dec 26 14:17:54 2013 +0200

    Need the _LIBCPP_NONUNIQUE_RTTI_BIT here, too
    
    Doesn't help though, throwing exceptions using __cxa_throw() and our
    hand-crafted type_infos still doesn't work on arm64.
    
    Change-Id: If6099e8696e6232c4b6d4bacd654d28419538e0f

diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx
index 71171ff..e431590 100644
--- a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx
+++ b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx
@@ -106,6 +106,9 @@ std::type_info * createFake_si_class_type_info(
     Fake_si_class_type_info * fake
         = reinterpret_cast<Fake_si_class_type_info *>(buf);
     fake->name = name;
+#ifdef _LIBCPP_NONUNIQUE_RTTI_BIT
+    *(uintptr_t*)(&fake->name) |= _LIBCPP_NONUNIQUE_RTTI_BIT;
+#endif
     fake->base = base;
     return reinterpret_cast<std::type_info *>(
         static_cast<Fake_type_info *>(fake));


More information about the Libreoffice-commits mailing list