diff options
author | Henry Castro <hcastro@collabora.com> | 2016-10-20 15:56:58 -0400 |
---|---|---|
committer | Henry Castro <hcastro@collabora.com> | 2016-10-20 21:19:26 +0000 |
commit | d7d07ade28009d89daa44431d491081a92a04a4e (patch) | |
tree | 48a3ef4e5fbd06a005618e2e4b41356217074d71 /sc | |
parent | aba0f624c8d4770b8a84a46add07c71656e96318 (diff) |
sc: check SID_EDIT_POSTIT parameters
Avoid crash when execute .uno:EditAnnotation with missing
arguments
Change-Id: Iaee8694b7481933f3672a3847264a49a6503b82e
Reviewed-on: https://gerrit.libreoffice.org/30116
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Henry Castro <hcastro@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/view/cellsh1.cxx | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx index 8c0040cbf26b..03983b8ebcea 100644 --- a/sc/source/ui/view/cellsh1.cxx +++ b/sc/source/ui/view/cellsh1.cxx @@ -2195,20 +2195,28 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) case SID_INSERT_POSTIT: case SID_EDIT_POSTIT: - if ( pReqArgs ) { - const SvxPostItAuthorItem& rAuthorItem = static_cast<const SvxPostItAuthorItem&>(pReqArgs->Get( SID_ATTR_POSTIT_AUTHOR )); - const SvxPostItDateItem& rDateItem = static_cast<const SvxPostItDateItem&>(pReqArgs->Get( SID_ATTR_POSTIT_DATE )); - const SvxPostItTextItem& rTextItem = static_cast<const SvxPostItTextItem&>(pReqArgs->Get( SID_ATTR_POSTIT_TEXT )); + const SfxPoolItem* pAuthor; + const SfxPoolItem* pDate; + const SfxPoolItem* pText; - ScAddress aPos( GetViewData()->GetCurX(), GetViewData()->GetCurY(), GetViewData()->GetTabNo() ); - pTabViewShell->ReplaceNote( aPos, rTextItem.GetValue(), &rAuthorItem.GetValue(), &rDateItem.GetValue() ); + if ( pReqArgs && pReqArgs->HasItem( SID_ATTR_POSTIT_AUTHOR, &pAuthor ) && + pReqArgs->HasItem( SID_ATTR_POSTIT_DATE, &pDate) && + pReqArgs->HasItem( SID_ATTR_POSTIT_TEXT, &pText) ) + { + const SvxPostItAuthorItem* pAuthorItem = static_cast<const SvxPostItAuthorItem*>( pAuthor ); + const SvxPostItDateItem* pDateItem = static_cast<const SvxPostItDateItem*>( pDate ); + const SvxPostItTextItem* pTextItem = static_cast<const SvxPostItTextItem*>( pText ); + + ScAddress aPos( GetViewData()->GetCurX(), GetViewData()->GetCurY(), GetViewData()->GetTabNo() ); + pTabViewShell->ReplaceNote( aPos, pTextItem->GetValue(), &pAuthorItem->GetValue(), &pDateItem->GetValue() ); + } + else + { + pTabViewShell->EditNote(); // note object to edit + } rReq.Done(); } - else - { - pTabViewShell->EditNote(); // note object to edit - } break; case FID_NOTE_VISIBLE: |