diff options
author | Noel Grandin <noel@peralex.com> | 2016-06-08 08:45:52 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2016-06-08 07:32:49 +0000 |
commit | 4bdbfdd6426460c562746c67c29a3b5e2bef8563 (patch) | |
tree | 86cbeefa70cc8f7c2ebb2bb0a8f26ca5177c69e8 | |
parent | c022a8fd6e153ee14f3d97f147af1abdd32f47e9 (diff) |
fix release in ODynamicLoader
otherwise, if the refcount goes to zero, we delete the object,
and the static pointer is now pointing to freed memory.
Change-Id: I0cdd303590e4e70797bfddb8b403db4d831aab04
Reviewed-on: https://gerrit.libreoffice.org/26045
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
-rw-r--r-- | include/salhelper/dynload.hxx | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/salhelper/dynload.hxx b/include/salhelper/dynload.hxx index b5b16fae4638..e157c016fef6 100644 --- a/include/salhelper/dynload.hxx +++ b/include/salhelper/dynload.hxx @@ -147,7 +147,8 @@ public: ~ODynamicLoader() { if( m_pLoader ) - m_pLoader->release(); + if (m_pLoader->release()==0) + m_pStaticLoader = nullptr; } /// Assign operator @@ -175,7 +176,7 @@ public: return static_cast<API*>(m_pLoader->getApi()); } - /// cast operator, which cast to a poiner with the initialized API function structure. + /// cast operator, which cast to a pointer with the initialized API function structure. API* SAL_CALL operator->() const { return static_cast<API*>(m_pLoader->getApi()); |