summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Castro <hcastro@collabora.com>2016-10-20 15:56:58 -0400
committerHenry Castro <hcastro@collabora.com>2016-10-20 21:19:26 +0000
commitd7d07ade28009d89daa44431d491081a92a04a4e (patch)
tree48a3ef4e5fbd06a005618e2e4b41356217074d71
parentaba0f624c8d4770b8a84a46add07c71656e96318 (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>
-rw-r--r--sc/source/ui/view/cellsh1.cxx28
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: