Fix a locking bug in our Java ComponentBase class, where after the transition
to disposed, the relevant variables (bDisposed and bInDispose) are written to outside a synchronized block. The equivalent C++ implementation in main/cppuhelper/source/implbase.cxx, method WeakComponentImplHelperBase::dispose(), already does this. Patch by: me (cherry picked from commit 2d382cef5450cf1593322184649257d3666cbbd8) Change-Id: I6c3e2ef78bc3c945245fe9fb7b6b713eb83710be Reviewed-on: https://gerrit.libreoffice.org/42189 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
committed by
Stephan Bergmann
parent
5c0bb1088a
commit
1963dc6455
@@ -87,8 +87,11 @@ public class ComponentBase extends WeakBase implements XComponent
|
||||
{
|
||||
// finally makes sure that the flags are set even if a RuntimeException is thrown.
|
||||
// That ensures that this function is only called once.
|
||||
bDisposed= true;
|
||||
bInDispose= false;
|
||||
synchronized (this)
|
||||
{
|
||||
bDisposed= true;
|
||||
bInDispose= false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user