diff --git a/include/class_loader/class_loader_core.hpp b/include/class_loader/class_loader_core.hpp index 6741864..c5913ae 100644 --- a/include/class_loader/class_loader_core.hpp +++ b/include/class_loader/class_loader_core.hpp @@ -163,6 +163,15 @@ bool hasANonPurePluginLibraryBeenOpened(); CLASS_LOADER_PUBLIC void hasANonPurePluginLibraryBeenOpened(bool hasIt); +#if defined(__has_feature) +#if __has_feature(address_sanitizer) // for clang +#define __SANITIZE_ADDRESS__ // GCC already sets this +#endif +#endif + +#if defined(__SANITIZE_ADDRESS__) +#include <sanitizer/lsan_interface.h> +#endif // Plugin Functions /** @@ -207,6 +216,11 @@ void registerPlugin(const std::string & class_name, const std::string & base_cla // Create factory impl::AbstractMetaObject<Base> * new_factory = new impl::MetaObject<Derived, Base>(class_name, base_class_name); + +#if defined(__SANITIZE_ADDRESS__) + __lsan_ignore_object(new_factory); +#endif + new_factory->addOwningClassLoader(getCurrentlyActiveClassLoader()); new_factory->setAssociatedLibraryPath(getCurrentlyLoadingLibraryName());