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:
Damjan Jovanovic
2017-09-08 02:17:19 +00:00
committed by Stephan Bergmann
parent 5c0bb1088a
commit 1963dc6455

View File

@@ -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