sw/source/uibase/uno/unomod.cxx | 61 +++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 34 deletions(-)
New commits: commit c4747e1c71fc7a25bcb6321891a719e527c3f572 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Sun Jan 13 20:09:21 2019 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Sun Jan 13 22:12:25 2019 +0100 ofz#12500 ubsan error Change-Id: I2520f77116be418a2cb8bcf3731894dc3dd4fb56 Reviewed-on: https://gerrit.libreoffice.org/66272 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/source/uibase/uno/unomod.cxx b/sw/source/uibase/uno/unomod.cxx index a7a60ad2faec..54c2c3a50940 100644 --- a/sw/source/uibase/uno/unomod.cxx +++ b/sw/source/uibase/uno/unomod.cxx @@ -275,82 +275,79 @@ void SwXPrintSettings::_preSetValues () } } -void SwXPrintSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, const uno::Any &rValue ) +namespace { - bool bVal; + bool tryBoolAccess(const uno::Any &rValue) + { + const auto xPrSet = o3tl::tryAccess<bool>(rValue); + if (!xPrSet) + throw lang::IllegalArgumentException(); + return *xPrSet; + } +} +void SwXPrintSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, const uno::Any &rValue ) +{ switch( rInfo.mnHandle ) { case HANDLE_PRINTSET_LEFT_PAGES: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintLeftPage(bVal); + mpPrtOpt->SetPrintLeftPage(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_RIGHT_PAGES: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintRightPage(bVal); + mpPrtOpt->SetPrintRightPage(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_REVERSED: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintReverse(bVal); + mpPrtOpt->SetPrintReverse(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_PROSPECT: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintProspect(bVal); + mpPrtOpt->SetPrintProspect(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_GRAPHICS: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintGraphic(bVal); + mpPrtOpt->SetPrintGraphic(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_TABLES: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintTable(bVal); + mpPrtOpt->SetPrintTable(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_DRAWINGS: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintDraw(bVal); + mpPrtOpt->SetPrintDraw(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_CONTROLS: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintControl(bVal); + mpPrtOpt->SetPrintControl(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_PAGE_BACKGROUND: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintPageBackground(bVal); + mpPrtOpt->SetPrintPageBackground(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_BLACK_FONTS: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintBlackFont(bVal); + mpPrtOpt->SetPrintBlackFont(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_SINGLE_JOBS: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintSingleJobs(bVal); + mpPrtOpt->SetPrintSingleJobs(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_PAPER_FROM_SETUP: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPaperFromSetup(bVal); + mpPrtOpt->SetPaperFromSetup(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_ANNOTATION_MODE: @@ -366,8 +363,7 @@ void SwXPrintSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, break; case HANDLE_PRINTSET_EMPTY_PAGES: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintEmptyPages(bVal); + mpPrtOpt->SetPrintEmptyPages(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_FAX_NAME: @@ -381,20 +377,17 @@ void SwXPrintSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, break; case HANDLE_PRINTSET_PROSPECT_RTL: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintProspect_RTL(bVal); + mpPrtOpt->SetPrintProspect_RTL(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_PLACEHOLDER: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintTextPlaceholder(bVal); + mpPrtOpt->SetPrintTextPlaceholder(tryBoolAccess(rValue)); } break; case HANDLE_PRINTSET_HIDDEN_TEXT: { - bVal = *o3tl::tryAccess<bool>(rValue); - mpPrtOpt->SetPrintHiddenText(bVal); + mpPrtOpt->SetPrintHiddenText(tryBoolAccess(rValue)); } break; default: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits