[Libreoffice-commits] core.git: sw/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Sun Jan 13 21:12:47 UTC 2019


 sw/source/uibase/uno/unomod.cxx |   61 +++++++++++++++++-----------------------
 1 file changed, 27 insertions(+), 34 deletions(-)

New commits:
commit c4747e1c71fc7a25bcb6321891a719e527c3f572
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Sun Jan 13 20:09:21 2019 +0000
Commit:     Caolán McNamara <caolanm at 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 <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at 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:


More information about the Libreoffice-commits mailing list