diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-12-09 10:55:19 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-12-09 11:34:11 +0000 |
commit | 1c4091eb525ff3a117e29da06bf66fa37928c70b (patch) | |
tree | c42018259da75557504f7a445ccabdd12c2b5136 | |
parent | 2b257feba285840dee91e3c3e7ddc112eb8f684e (diff) |
Resolves: fdo#87132 a11y crash on clicking outside of inline playback window
where the Edit::~Edit has completed, and the inherited Window::~Window is running
and way down the stack someone casts it to an Edit and attempts to call Edit methods
on it because of its WINDOW_EDIT type.
So lets try setting its type to WINDOW_WINDOW at the end of the Edit dtor
==21149== Invalid free() / delete / delete[] / realloc()
==21149== at 0x4A07991: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==21149== by 0x7592F9C: VCLXAccessibleComponent::FillAccessibleStateSet(utl::AccessibleStateSetHelper&) (vclxaccessiblecomponent.cxx:457)
==21149== by 0x7592384: VCLXAccessibleComponent::getAccessibleStateSet() (vclxaccessiblecomponent.cxx:661)
==21149== by 0x51B1640: comphelper::OAccessibleContextWrapper::getAccessibleStateSet() (accessiblewrapper.cxx:596)
==21149== by 0x152E84D1: AtkListener::updateChildList(com::sun::star::accessibility::XAccessibleContext*) (atklistener.cxx:125)
==21149== by 0x152E8973: AtkListener::handleChildRemoved(com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessibleContext> const&, com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessible> const&) (atklistener.cxx:199)
==21149== by 0x152E8C2D: AtkListener::notifyEvent(com::sun::star::accessibility::AccessibleEventObject const&) (atklistener.cxx:292)
==21149== by 0x51AB603: comphelper::AccessibleEventNotifier::addEvent(unsigned int, com::sun::star::accessibility::AccessibleEventObject const&) (accessibleeventnotifier.cxx:285)
==21149== by 0x51B451C: comphelper::OAccessibleContextWrapperHelper::notifyEvent(com::sun::star::accessibility::AccessibleEventObject const&) (accessiblewrapper.cxx:492)
==21149== by 0x51AB603: comphelper::AccessibleEventNotifier::addEvent(unsigned int, com::sun::star::accessibility::AccessibleEventObject const&) (accessibleeventnotifier.cxx:285)
==21149== by 0x51AA626: comphelper::OAccessibleContextHelper::NotifyAccessibleEvent(short, com::sun::star::uno::Any const&, com::sun::star::uno::Any const&) (accessiblecontexthelper.cxx:195)
==21149== by 0x7591800: VCLXAccessibleComponent::ProcessWindowEvent(VclWindowEvent const&) (vclxaccessiblecomponent.cxx:208)
==21149== by 0x7592B6D: VCLXAccessibleComponent::WindowEventListener(VclSimpleEvent*) (vclxaccessiblecomponent.cxx:118)
==21149== by 0x8606A8E: VclEventListeners::Call(VclSimpleEvent*) const (link.hxx:123)
==21149== by 0x84133CD: Window::CallEventListeners(unsigned long, void*) (window.cxx:4289)
==21149== by 0x8422EA0: Window::~Window() (window.cxx:3413)
==21149== by 0x843ECFE: Edit::~Edit() (edit.cxx:243)
==21149== by 0x20C42894: avmedia::MediaControl::~MediaControl() (mediacontrol.cxx:199)
Change-Id: Id231fe34238b3e9d0cacb1933e11fdde23839370
(cherry picked from commit fa517ab03d9e65291a4b0f25a1188ffe454f6f3e)
-rw-r--r-- | vcl/source/control/edit.cxx | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx index ffe94bfd11c2..e5a497c36f1f 100644 --- a/vcl/source/control/edit.cxx +++ b/vcl/source/control/edit.cxx @@ -267,6 +267,8 @@ Edit::~Edit() uno::Reference< lang::XEventListener> xEL( mxDnDListener, uno::UNO_QUERY ); xEL->disposing( lang::EventObject() ); // #95154# #96585# Empty Source means it's the Client } + + SetType(WINDOW_WINDOW); } void Edit::ImplInitEditData() |