protect UNO EnvStack's s_setCurrent() against unknown threadid

untracked threadIds have been observed and can result in crashes.
s_getCurrent() already checks them and s_setCurrent() does it now.

(cherry picked from commit bf8e3135ac906ce0ab7d6d9ccbd434f1597f2ff4)

Conflicts:
	cppu/source/uno/EnvStack.cxx

Change-Id: If35237179c1ee3b854e6183294ed72a6d0b105a8
This commit is contained in:
Herbert Dürr 2013-05-02 09:24:10 +00:00 committed by Caolán McNamara
parent 1cab60bb06
commit 1ad6f436b5

View File

@ -74,10 +74,15 @@ static void s_setCurrent(uno_Environment * pEnv)
osl::MutexGuard guard(s_threadMap_mutex::get()); osl::MutexGuard guard(s_threadMap_mutex::get());
ThreadMap &rThreadMap = s_threadMap::get(); ThreadMap &rThreadMap = s_threadMap::get();
if (pEnv) if (pEnv)
{
rThreadMap[threadId] = pEnv; rThreadMap[threadId] = pEnv;
}
else else
rThreadMap.erase(threadId); {
ThreadMap::iterator iEnv = rThreadMap.find(threadId);
if( iEnv != rThreadMap.end())
rThreadMap.erase(iEnv);
}
} }
static uno_Environment * s_getCurrent(void) static uno_Environment * s_getCurrent(void)