diff options
Diffstat (limited to 'bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx')
-rw-r--r-- | bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx index 762d1392b34e..ad2b9f702c5d 100644 --- a/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx +++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/except.cxx @@ -138,8 +138,9 @@ void raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ) __cxxabiv1::__cxa_throw( pCppExc, rtti, deleteException ); } -void fillUnoException( __cxxabiv1::__cxa_exception * header, uno_Any * pUnoExc, uno_Mapping * pCpp2Uno ) +void fillUnoException(uno_Any * pUnoExc, uno_Mapping * pCpp2Uno) { + __cxxabiv1::__cxa_exception * header = __cxxabiv1::__cxa_get_globals()->caughtExceptions; if (! header) { RuntimeException aRE( "no exception header!" ); @@ -149,8 +150,10 @@ void fillUnoException( __cxxabiv1::__cxa_exception * header, uno_Any * pUnoExc, 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() ); |