diff options
Diffstat (limited to 'sc/source/ui/unoobj/confuno.cxx')
-rw-r--r-- | sc/source/ui/unoobj/confuno.cxx | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/sc/source/ui/unoobj/confuno.cxx b/sc/source/ui/unoobj/confuno.cxx index ed59eebd832d..6cd3204f2ad5 100644 --- a/sc/source/ui/unoobj/confuno.cxx +++ b/sc/source/ui/unoobj/confuno.cxx @@ -156,7 +156,20 @@ void SAL_CALL ScDocumentConfiguration::setPropertyValue( else if ( aPropertyName == SC_UNO_SHOWPAGEBR ) aViewOpt.SetOption(VOPT_PAGEBREAKS, ScUnoHelpFunctions::GetBoolFromAny( aValue ) ); else if ( aPropertyName == SC_UNONAME_LINKUPD ) - rDoc.SetLinkMode( static_cast<ScLkUpdMode> ( ScUnoHelpFunctions::GetInt16FromAny( aValue ) ) ); + { + sal_Int16 n; + //TODO: css.sheet.XGlobalSheetSettings LinkUpdateMode property is + // documented to take values in the range 0--2 (always, never, on + // demaned), but appears to be routinely set to 3 here, + // corresponding to ScLkUpdMode LM_UNKNOWN: + if (!(aValue >>= n) || n < 0 || n > 3) { + throw css::lang::IllegalArgumentException( + ("LinkUpdateMode property value must be a SHORT in the" + " range 0--3"), + css::uno::Reference<css::uno::XInterface>(), -1); + } + rDoc.SetLinkMode( static_cast<ScLkUpdMode>(n) ); + } else if ( aPropertyName == SC_UNO_COLROWHDR ) aViewOpt.SetOption(VOPT_HEADER, ScUnoHelpFunctions::GetBoolFromAny( aValue ) ); else if ( aPropertyName == SC_UNO_SHEETTABS ) |