summaryrefslogtreecommitdiff
path: root/bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx')
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx10
1 files changed, 10 insertions, 0 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx
index faf45a8b0590..2e11b6eb42bc 100644
--- a/bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/rtti.cxx
@@ -80,7 +80,9 @@ class RTTI
std::vector<OString> m_rttiNames;
std::unordered_map<OUString, std::unique_ptr<Generated>> m_generatedRttis;
+#if !defined ANDROID
void * m_hApp;
+#endif
public:
RTTI();
@@ -90,13 +92,17 @@ public:
};
RTTI::RTTI()
+#if !defined ANDROID
: m_hApp( dlopen( nullptr, RTLD_LAZY ) )
+#endif
{
}
RTTI::~RTTI()
{
+#if !defined ANDROID
dlclose( m_hApp );
+#endif
}
std::type_info * RTTI::getRTTI(typelib_TypeDescription const & pTypeDescr)
@@ -124,7 +130,11 @@ std::type_info * RTTI::getRTTI(typelib_TypeDescription const & pTypeDescr)
buf.append( 'E' );
OString symName( buf.makeStringAndClear() );
+#if !defined ANDROID
rtti = static_cast<std::type_info *>(dlsym( m_hApp, symName.getStr() ));
+#else
+ rtti = static_cast<std::type_info *>(dlsym( RTLD_DEFAULT, symName.getStr() ));
+#endif
if (rtti)
{