summaryrefslogtreecommitdiff
path: root/bridges/source/cpp_uno/gcc3_macosx_x86-64
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/source/cpp_uno/gcc3_macosx_x86-64')
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx7
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_x86-64/share.hxx3
-rw-r--r--bridges/source/cpp_uno/gcc3_macosx_x86-64/uno2cpp.cxx8
3 files changed, 10 insertions, 8 deletions
diff --git a/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx b/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx
index 541e251506dd..12058c53a2a2 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx
+++ b/bridges/source/cpp_uno/gcc3_macosx_x86-64/except.cxx
@@ -341,8 +341,9 @@ void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp )
__cxxabiv1::__cxa_throw( pCppExc, rtti, deleteException );
}
-void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno )
+void fillUnoException(uno_Any * pUnoExc, uno_Mapping * pCpp2Uno)
{
+ __cxa_exception * header = __cxa_get_globals()->caughtExceptions;
if (! header)
{
RuntimeException aRE( "no exception header!" );
@@ -352,8 +353,10 @@ void fillUnoException( __cxa_exception * header, uno_Any * pUnoExc, uno_Mapping
return;
}
+ std::type_info *exceptionType = __cxxabiv1::__cxa_current_exception_type();
+
typelib_TypeDescription * pExcTypeDescr = nullptr;
- OUString unoName( toUNOname( header->exceptionType->name() ) );
+ OUString unoName( toUNOname( exceptionType->name() ) );
#if OSL_DEBUG_LEVEL > 1
OString cstr_unoName( OUStringToOString( unoName, RTL_TEXTENCODING_ASCII_US ) );
fprintf( stderr, "> c++ exception occurred: %s\n", cstr_unoName.getStr() );
diff --git a/bridges/source/cpp_uno/gcc3_macosx_x86-64/share.hxx b/bridges/source/cpp_uno/gcc3_macosx_x86-64/share.hxx
index 3eb88cdc0242..39939ab6be72 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_x86-64/share.hxx
+++ b/bridges/source/cpp_uno/gcc3_macosx_x86-64/share.hxx
@@ -136,8 +136,7 @@ namespace CPPU_CURRENT_NAMESPACE
void raiseException(
uno_Any * pUnoExc, uno_Mapping * pUno2Cpp );
-void fillUnoException(
- __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno );
+void fillUnoException(uno_Any *, uno_Mapping * pCpp2Uno);
}
#endif
diff --git a/bridges/source/cpp_uno/gcc3_macosx_x86-64/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_macosx_x86-64/uno2cpp.cxx
index ae1dab7e1702..13002709436d 100644
--- a/bridges/source/cpp_uno/gcc3_macosx_x86-64/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_macosx_x86-64/uno2cpp.cxx
@@ -280,10 +280,10 @@ static void cpp_call(
uno_destructData( pCppReturn, pReturnTypeDescr, cpp_release );
}
}
- catch (...)
- {
- // fill uno exception
- fillUnoException( __cxa_get_globals()->caughtExceptions, *ppUnoExc, pThis->getBridge()->getCpp2Uno() );
+ catch (...)
+ {
+ // fill uno exception
+ CPPU_CURRENT_NAMESPACE::fillUnoException(*ppUnoExc, pThis->getBridge()->getCpp2Uno());
// temporary params
for ( ; nTempIndices--; )