From: Zbigniew Kostrzewa Date: Wed, 31 Jul 2013 07:34:46 +0000 (+0200) Subject: Prevent issue fix. X-Git-Tag: 2.2.1_release~2^2~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4d622fbdc7326d84a36b3b6c277309bd776f2ef9;p=framework%2Fweb%2Fwrt-plugins-common.git Prevent issue fix. [Issue#] #17499 [Problem] Shared library opened with dlopen() but not closed. [Cause] N/A [Solution] Close the library with dlclose() [SCMRequest] N/A [Verification] Build repository. Change-Id: Iea83e537f3fbff0682b2ca4b4b886088090b11e6 --- diff --git a/src/plugins-api-support/PluginRegistry.cpp b/src/plugins-api-support/PluginRegistry.cpp index adf6563..c4bc496 100644 --- a/src/plugins-api-support/PluginRegistry.cpp +++ b/src/plugins-api-support/PluginRegistry.cpp @@ -31,7 +31,9 @@ #include #include +#include #include +#include namespace WrtPluginsApi { void PluginRegistry::AddPlugin(const std::string& libraryName, @@ -87,6 +89,20 @@ void PluginRegistry::UnloadAll() LogError("Error: " << (error != NULL ? error : "unknown")); continue; } + DPL_SCOPE_EXIT(handle) { + if (dlclose(handle) != 0) { + const char* error = dlerror(); + if (error != NULL) + { + std::string errstr{error}; + _E("%s", errstr.c_str()); + } + else + { + _E("unknown error while closing plug-in library"); + } + } + }; ExportedApi* entryPoint = static_cast