[Libreoffice-commits] core.git: bridges/source ucbhelper/source
Tor Lillqvist
tml at collabora.com
Fri Dec 27 04:04:47 PST 2013
bridges/source/cpp_uno/gcc3_ios_arm/except.cxx | 16 ++++++++++---
ucbhelper/source/provider/cancelcommandexecution.cxx | 23 -------------------
2 files changed, 13 insertions(+), 26 deletions(-)
New commits:
commit 17f1b0f551dbacc24fe5e2c90d5f00e5578ab9e7
Author: Tor Lillqvist <tml at collabora.com>
Date: Fri Dec 27 14:00:51 2013 +0200
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
diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx b/bridges/source/cpp_uno/gcc3_ios_arm/except.cxx
index 22026cc..2f1df7a 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(())
diff --git a/ucbhelper/source/provider/cancelcommandexecution.cxx b/ucbhelper/source/provider/cancelcommandexecution.cxx
index 617c96c..2f4e42e 100644
--- a/ucbhelper/source/provider/cancelcommandexecution.cxx
+++ b/ucbhelper/source/provider/cancelcommandexecution.cxx
@@ -74,22 +74,6 @@ void cancelCommandExecution( const uno::Any & rException,
}
}
-#if defined IOS && defined __arm64
- // No Java, Basic, or Python on iOS, so try to throw the exception
- // directly. Much simpler. Especially as I haven't managed yet to
- // get the C++/UNO bridge to work for arm64, and this
- // cppu::throwException thing seems to be the only use for it, at
- // least in the test apps...
-
- ucb::NameClashException aNCE;
- if ( rException >>= aNCE )
- throw aNCE;
-
- lang::IllegalArgumentException aIAE;
- if ( rException >>= aIAE )
- throw aIAE;
-#endif
-
cppu::throwException( rException );
OSL_FAIL( "Return from cppu::throwException call!!!" );
throw uno::RuntimeException();
@@ -127,13 +111,6 @@ void cancelCommandExecution( const ucb::IOErrorCode eError,
}
}
-#if defined IOS && defined __arm64
- // See comment above.
- ucb::InteractiveAugmentedIOException aExc;
- if ( xRequest->getRequest() >>= aExc )
- throw aExc;
-#endif
-
cppu::throwException( xRequest->getRequest() );
OSL_FAIL( "Return from cppu::throwException call!!!" );
More information about the Libreoffice-commits
mailing list