diff options
author | Tor Lillqvist <tml@collabora.com> | 2013-12-27 14:00:51 +0200 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2013-12-27 14:02:44 +0200 |
commit | 17f1b0f551dbacc24fe5e2c90d5f00e5578ab9e7 (patch) | |
tree | 33afae11f3acd4859fe5a46f60e82ee959311ed1 /bridges | |
parent | 8f6a574d4f0fdf9d113aaa073daf948a7ec1df52 (diff) |
Using pre-cached type_infos provided by the typeid operator seems to work now
Apparently there was no problem in this after all. The reason it
seemed not to work earlier was because of the unwinding failure due to
the missing .cfi_startproc and .cfi_endproc thingies in helper.s
The hack in ucbhelper is now not needed after all.
Change-Id: If9fec5c502d4c9d0c44709ad9c2729f812e882e2
Diffstat (limited to 'bridges')
-rw-r--r-- | bridges/source/cpp_uno/gcc3_ios_arm/except.cxx | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx index 22026ccfff57..2f1df7a85adb 100644 --- a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx +++ b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx @@ -35,6 +35,7 @@ #include <com/sun/star/uno/genfunc.hxx> #include <com/sun/star/uno/RuntimeException.hpp> #include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp> +#include <com/sun/star/ucb/NameClashException.hpp> #include <typelib/typedescription.hxx> #include <uno/any2.h> @@ -171,12 +172,21 @@ public: RTTI::RTTI() SAL_THROW(()) : m_hApp( dlopen( 0, RTLD_LAZY ) ) { -#if 0 // Insert commonly needed type_infos to avoid dlsym() calls - // Ideally we should insert all needed ones + // Ideally we should insert all needed ones, and we actually must, + // for arm64, as the dynamically generated type_infos don't seem + // to work correctly. Luckily it seems that quite few types of + // exceptions are thrown through the C++/UNO bridge at least in + // the TiledLibreOffice test app. + + // (As no Java, Basic or Python is supported in LO code on iOS, we + // can know the set of types of exceptions throws a priori, so + // keeping this list complete should be possible.) + m_rttis.insert( t_rtti_map::value_type( "com.sun.star.ucb.InteractiveAugmentedIOException", (std::type_info*) &typeid( com::sun::star::ucb::InteractiveAugmentedIOException ) ) ); -#endif + m_rttis.insert( t_rtti_map::value_type( "com.sun.star.ucb.NameClashException", + (std::type_info*) &typeid( com::sun::star::ucb::NameClashException ) ) ); } RTTI::~RTTI() SAL_THROW(()) |