diff options
Diffstat (limited to 'sc/source/ui/unoobj/defltuno.cxx')
-rw-r--r-- | sc/source/ui/unoobj/defltuno.cxx | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sc/source/ui/unoobj/defltuno.cxx b/sc/source/ui/unoobj/defltuno.cxx index 141a7d0abb73..f3f76685e5cb 100644 --- a/sc/source/ui/unoobj/defltuno.cxx +++ b/sc/source/ui/unoobj/defltuno.cxx @@ -46,6 +46,8 @@ #include "unonames.hxx" #include "docoptio.hxx" +#include <limits> + using namespace ::com::sun::star; //------------------------------------------------------------------------ @@ -157,7 +159,7 @@ void SAL_CALL ScDocDefaultsObj::setPropertyValue( sal_Int16 nValue = 0; if (aValue >>= nValue) { - aDocOpt.SetStdPrecision(static_cast<sal_uInt8> (nValue)); + aDocOpt.SetStdPrecision(static_cast<sal_uInt16> (nValue)); pDoc->SetDocOptions(aDocOpt); } } @@ -250,7 +252,12 @@ uno::Any SAL_CALL ScDocDefaultsObj::getPropertyValue( const rtl::OUString& aProp if (pDoc) { const ScDocOptions& aDocOpt = pDoc->GetDocOptions(); - aRet <<= static_cast<sal_Int16> (aDocOpt.GetStdPrecision()); + sal_uInt16 nPrec = aDocOpt.GetStdPrecision(); + // the max value of unsigned 16-bit integer is used as the flag + // value for unlimited precision, c.f. + // SvNumberFormatter::UNLIMITED_PRECISION. + if (nPrec <= ::std::numeric_limits<sal_Int16>::max()) + aRet <<= static_cast<sal_Int16> (nPrec); } else throw uno::RuntimeException(); |