[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