summaryrefslogtreecommitdiff
path: root/framework
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2021-03-02 16:13:16 +0100
committerCaolán McNamara <caolanm@redhat.com>2021-03-02 21:42:46 +0100
commit9ccbf716ba16effb356c97c992d2cd738c44f767 (patch)
tree8bfb4f85f7ebd7c5ee7be90e5322e42d386b4bd7 /framework
parent5e4e39b2a3db18b5f06070d01d15b35576e4b2cc (diff)
Fix null-pointer-use
Since df33714f0ecaf4d35011f2d2116e5e1a4ec75f1a "tdf#131000: sc: Add UItest" introduced that test, UITest_calc_tests9 UITEST_TEST_NAME=forms.Forms.test_tdf131000 fails with > /framework/source/services/frame.cxx:1451:34: runtime error: member call on null pointer of type 'vcl::Window' > #0 0x2b0f4825f68f in (anonymous namespace)::XFrameImpl::setComponent(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&, com::sun::star::uno::Reference<com::sun::star::frame::XController> const&) /framework/source/services/frame.cxx:1451:34 > #1 0x2b0f59361178 in FmPropBrw::impl_ensurePropertyBrowser_nothrow(FmFormShell*) /svx/source/form/fmPropBrw.cxx:508:27 > #2 0x2b0f5936236e in FmPropBrw::StateChanged(unsigned short, SfxItemState, SfxPoolItem const*) /svx/source/form/fmPropBrw.cxx:539:13 > #3 0x2b0f4fb3a8f0 in SfxStateCache::SetState_Impl(SfxItemState, SfxPoolItem const*, bool) /sfx2/source/control/statcach.cxx:423:24 > #4 0x2b0f4fb39a28 in SfxStateCache::SetState(SfxItemState, SfxPoolItem const*, bool) /sfx2/source/control/statcach.cxx:324:5 > #5 0x2b0f4f868e30 in SfxBindings::UpdateControllers_Impl(SfxFoundCache_Impl const&, SfxPoolItem const*, SfxItemState) /sfx2/source/control/bindings.cxx:1218:16 > #6 0x2b0f4f865d34 in SfxBindings::Update_Impl(SfxStateCache&) /sfx2/source/control/bindings.cxx:271:17 > #7 0x2b0f4f86d30c in SfxBindings::Update(unsigned short) /sfx2/source/control/bindings.cxx:350:13 > #8 0x2b0f4f900fc6 in SfxDispatcher::Call_Impl(SfxShell&, SfxSlot const&, SfxRequest&, bool) /sfx2/source/control/dispatch.cxx:279:24 > #9 0x2b0f4f91693f in SfxDispatcher::Execute_(SfxShell&, SfxSlot const&, SfxRequest&, SfxCallMode) /sfx2/source/control/dispatch.cxx:753:9 > #10 0x2b0f4f88e55f in SfxBindings::Execute_Impl(SfxRequest&, SfxSlot const*, SfxShell*) /sfx2/source/control/bindings.cxx:1060:22 > #11 0x2b0f4fd7a482 in SfxDispatchController_Impl::dispatch(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) /sfx2/source/control/unoctitm.cxx:758:53 > #12 0x2b0f4fd753c1 in SfxOfficeDispatch::dispatch(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /sfx2/source/control/unoctitm.cxx:229:16 > #13 0x2b0f3ff4de92 in comphelper::dispatchCommand(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) /comphelper/source/misc/dispatchcommand.cxx:61:12 > #14 0x2b0f3ff4e605 in comphelper::dispatchCommand(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) /comphelper/source/misc/dispatchcommand.cxx:76:12 > #15 0x2b0f75905186 in UITest::executeCommand(rtl::OUString const&) /vcl/source/uitest/uitest.cxx:24:12 > #16 0x2b0f75917a20 in (anonymous namespace)::UITestUnoObj::executeCommand(rtl::OUString const&) /vcl/source/uitest/uno/uitest_uno.cxx:69:12 > #17 0x2b0fb07ea8db in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, double*) /bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:77:5 > #18 0x2b0fb07e4bf2 in cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, bridges::cpp_uno::shared::VtableSlot, _typelib_TypeDescriptionReference*, int, _typelib_MethodParameter*, void*, void**, _uno_Any**) /bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:233:13 > #19 0x2b0fb07e173d in unoInterfaceProxyDispatch /bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:413:13 > #20 0x2b0fb5c1835a in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny> >*) const /binaryurp/source/incomingrequest.cxx:235:13 > #21 0x2b0fb5c11f7a in binaryurp::IncomingRequest::execute() const /binaryurp/source/incomingrequest.cxx:78:26 > #22 0x2b0fb5ceecc7 in request /binaryurp/source/reader.cxx:85:9 > #23 0x2b0f4145fac4 in cppu_threadpool::JobQueue::enter(void const*, bool) /cppu/source/threadpool/jobqueue.cxx:100:17 > #24 0x2b0f414838eb in cppu_threadpool::ORequestThread::run() /cppu/source/threadpool/thread.cxx:165:31 > #25 0x2b0f4148f62f in threadFunc /include/osl/thread.hxx:189:15 > #26 0x2b0f37f38da8 in osl_thread_start_Impl(void*) /sal/osl/unx/thread.cxx:264:9 > #27 0x2b0f39ddaea4 in start_thread (/lib64/libpthread.so.0+0x7ea4) > #28 0x2b0f3a71096c in clone (/lib64/libc.so.6+0xfe96c) (<https://ci.libreoffice.org/job/lo_ubsan/1933/>). The code in XFrameImpl::setComponent is like that ever since 79d6899a2f859d155d703699d0f7fe178b0c8ebf "INTEGRATION: CWS inplaceobjects" did > - sal_Bool bHadFocus = m_eActiveState==E_FOCUS; > + Window* pOwnWindow = VCLUnoHelper::GetWindow( xContainerWindow ); > + sal_Bool bHadFocus = pOwnWindow->HasChildPathFocus(); Lets assume that pOwnWindow can legitimately be null here (i.e., it is not just a consequence of an error that should be fixed elsewhere), and that bHadFocus should be false in that case. Change-Id: I73ce2c24e011d5b2ba95d09fd56bd59e47b4b991 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111841 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'framework')
-rw-r--r--framework/source/services/frame.cxx2
1 files changed, 1 insertions, 1 deletions
diff --git a/framework/source/services/frame.cxx b/framework/source/services/frame.cxx
index 9733b87a1041..f74dad8f5fd3 100644
--- a/framework/source/services/frame.cxx
+++ b/framework/source/services/frame.cxx
@@ -1448,7 +1448,7 @@ sal_Bool SAL_CALL XFrameImpl::setComponent(const css::uno::Reference< css::awt::
css::uno::Reference< css::awt::XWindow > xOldComponentWindow = m_xComponentWindow;
css::uno::Reference< css::frame::XController > xOldController = m_xController;
VclPtr<vcl::Window> pOwnWindow = VCLUnoHelper::GetWindow( xContainerWindow );
- bool bHadFocus = pOwnWindow->HasChildPathFocus();
+ bool bHadFocus = pOwnWindow != nullptr && pOwnWindow->HasChildPathFocus();
bool bWasConnected = m_bConnected;
aReadLock.clear();
/* } SAFE */