From 6153be8a23aec4ef162fc18a1aaa4cfc0d401245 Mon Sep 17 00:00:00 2001 From: Jose Date: Thu, 29 Mar 2018 10:25:58 +0200 Subject: Do not unload DLLs with UWP test controller Unloading DLLs in UWP controller was causing an AccessViolation. --- cpp/test/uwp/controller/ViewController.xaml.cpp | 28 +++---------------------- 1 file changed, 3 insertions(+), 25 deletions(-) (limited to 'cpp/test/uwp/controller/ViewController.xaml.cpp') diff --git a/cpp/test/uwp/controller/ViewController.xaml.cpp b/cpp/test/uwp/controller/ViewController.xaml.cpp index a2d953ad84d..99d594fb81e 100644 --- a/cpp/test/uwp/controller/ViewController.xaml.cpp +++ b/cpp/test/uwp/controller/ViewController.xaml.cpp @@ -197,7 +197,6 @@ MainHelperI::run() if(_dllTestShutdown == 0) { print("failed to find dllTestShutdown function from `" + _dll + "'"); - _controller->unloadDll(_dll); completed(EXIT_FAILURE); return; } @@ -206,7 +205,6 @@ MainHelperI::run() if(sym == 0) { print("failed to find dllMain function from `" + _dll + "'"); - _controller->unloadDll(_dll); completed(EXIT_FAILURE); return; } @@ -233,7 +231,6 @@ MainHelperI::run() completed(EXIT_FAILURE); } delete[] argv; - _controller->unloadDll(_dll); }); _thread = move(t); } @@ -491,36 +488,17 @@ HINSTANCE ViewController::loadDll(const string& name) { unique_lock lock(_mutex); - map>::iterator p = _dlls.find(name); + map::iterator p = _dlls.find(name); if(p == _dlls.end()) { HINSTANCE hnd = LoadPackagedLibrary(Ice::stringToWstring(name).c_str(), 0); - p = _dlls.insert(make_pair(name, make_pair(hnd, 0))).first; - } - ++p->second.second; - return p->second.first; -} - -void -ViewController::unloadDll(const string& name) -{ - unique_lock lock(_mutex); - map>::iterator p = _dlls.find(name); - assert(p != _dlls.end()); - if(--p->second.second == 0) - { - FreeLibrary(p->second.first); - _dlls.erase(p); + p = _dlls.insert(make_pair(name, hnd)).first; } + return p->second; } ViewController::~ViewController() { - for(map>::const_iterator p = _dlls.begin(); p != _dlls.end(); ++p) - { - FreeLibrary(p->second.first); - } - if(controllerHelper) { delete controllerHelper; -- cgit v1.2.3