[Libreoffice-commits] core.git: Branch 'libreoffice-6-2' - bridges/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Sat Feb 9 16:24:50 UTC 2019


 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 69b13a0028c1d09f1c267775879685e18a498766
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Fri Feb 8 10:10:30 2019 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Sat Feb 9 17:24:29 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 <sbergman at redhat.com>
    (cherry picked from commit 0c314c90a7af7d9e855e3cacfd8e7a31ed065a26)
    Reviewed-on: https://gerrit.libreoffice.org/67548
    Tested-by: Rene Engelhard <rene at debian.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at 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 2e3ce61caee9..d910b454b04f 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(


More information about the Libreoffice-commits mailing list