summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2013-12-27 14:00:51 +0200
committerTor Lillqvist <tml@collabora.com>2013-12-27 14:02:44 +0200
commit17f1b0f551dbacc24fe5e2c90d5f00e5578ab9e7 (patch)
tree33afae11f3acd4859fe5a46f60e82ee959311ed1 /bridges
parent8f6a574d4f0fdf9d113aaa073daf948a7ec1df52 (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.cxx16
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(())