bridges/source/cpp_uno/gcc3_linux_aarch64/abi.cxx | 5 +++-- bridges/source/cpp_uno/gcc3_linux_aarch64/abi.hxx | 2 +- bridges/source/cpp_uno/gcc3_linux_aarch64/uno2cpp.cxx | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-)
New commits: commit 0c314c90a7af7d9e855e3cacfd8e7a31ed065a26 Author: Stephan Bergmann <sberg...@redhat.com> AuthorDate: Fri Feb 8 10:10:30 2019 +0100 Commit: Stephan Bergmann <sberg...@redhat.com> CommitDate: Fri Feb 8 16:02:38 2019 +0100 The gcc3_linux_aarch64 bridge needs to call __cxa_current_exception_type, too ...or else mapException would extract garbage from the fake exception->exceptionType std::type_info* when catching via cppu::getCaughtException the rethrown exception thrown via std::rethrow_exception in Test::testgetCaughtException in cppuhelper/qa/misc/test_misc.cxx. 6ddecf61ecada646fbd6f8809270d47289727e8a "fillUnoException not working on std::rethrow_exception exceptions" had adapted the other relevant bridges/source/cpp_uno/gcc3_*/ cases but missed the gcc3_linux_aarch64 one. Change-Id: I5a2afb11ad4abf851169bd3fd8ae647cc81c2fcd Reviewed-on: https://gerrit.libreoffice.org/67542 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sberg...@redhat.com> diff --git a/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.cxx b/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.cxx index da22eb436b8f..477879f2f2a0 100644 --- a/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.cxx @@ -224,10 +224,11 @@ StructKind getStructKind(typelib_CompoundTypeDescription const * type) { namespace abi_aarch64 { void mapException( - __cxa_exception * exception, uno_Any * any, uno_Mapping * mapping) + __cxa_exception * exception, std::type_info const * type, uno_Any * any, uno_Mapping * mapping) { assert(exception != 0); - OUString unoName(toUnoName(exception->exceptionType->name())); + assert(type != nullptr); + OUString unoName(toUnoName(type->name())); typelib_TypeDescription * td = 0; typelib_typedescription_getByName(&td, unoName.pData); if (td == 0) { diff --git a/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.hxx b/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.hxx index de9bd5efbccb..50c5f1f21a37 100644 --- a/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.hxx +++ b/bridges/source/cpp_uno/gcc3_linux_aarch64/abi.hxx @@ -70,7 +70,7 @@ struct __cxa_eh_globals }; void mapException( - __cxa_exception * exception, uno_Any * any, uno_Mapping * mapping); + __cxa_exception * exception, std::type_info const * type, uno_Any * any, uno_Mapping * mapping); void raiseException(uno_Any * any, uno_Mapping * mapping); diff --git a/bridges/source/cpp_uno/gcc3_linux_aarch64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_linux_aarch64/uno2cpp.cxx index 8faccbf3edaf..32a19de020b1 100644 --- a/bridges/source/cpp_uno/gcc3_linux_aarch64/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_aarch64/uno2cpp.cxx @@ -192,7 +192,8 @@ void call( abi_aarch64::mapException( reinterpret_cast<abi_aarch64::__cxa_eh_globals *>( __cxxabiv1::__cxa_get_globals())->caughtExceptions, - *exception, proxy->getBridge()->getCpp2Uno()); + __cxxabiv1::__cxa_current_exception_type(), *exception, + proxy->getBridge()->getCpp2Uno()); for (sal_Int32 i = 0; i != count; ++i) { if (cppArgs[i] != 0) { uno_destructData( _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits