[Libreoffice-commits] core.git: cppu/source
Herbert Dürr
hdu at apache.org
Thu May 9 01:31:06 PDT 2013
cppu/source/uno/EnvStack.cxx | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
New commits:
commit 1ad6f436b5cd937dfc9d91c284920efddd6ad185
Author: Herbert Dürr <hdu at apache.org>
Date: Thu May 2 09:24:10 2013 +0000
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
diff --git a/cppu/source/uno/EnvStack.cxx b/cppu/source/uno/EnvStack.cxx
index cafd4fe..22d7bd9 100644
--- a/cppu/source/uno/EnvStack.cxx
+++ b/cppu/source/uno/EnvStack.cxx
@@ -74,10 +74,15 @@ static void s_setCurrent(uno_Environment * pEnv)
osl::MutexGuard guard(s_threadMap_mutex::get());
ThreadMap &rThreadMap = s_threadMap::get();
if (pEnv)
+ {
rThreadMap[threadId] = pEnv;
-
+ }
else
- rThreadMap.erase(threadId);
+ {
+ ThreadMap::iterator iEnv = rThreadMap.find(threadId);
+ if( iEnv != rThreadMap.end())
+ rThreadMap.erase(iEnv);
+ }
}
static uno_Environment * s_getCurrent(void)
More information about the Libreoffice-commits
mailing list