Kaydet (Commit) aa51bf1e authored tarafından Eike Rathke's avatar Eike Rathke

in GetInt...() check !isFinite() instead of isNan()

... and propagate coded double error instead of setting
errIllegalArgument.

Change-Id: I28456c3b0320181a80fe255e875a0bd78216c279
üst 388014fc
...@@ -2149,9 +2149,9 @@ double ScInterpreter::GetDoubleWithDefault(double nDefault) ...@@ -2149,9 +2149,9 @@ double ScInterpreter::GetDoubleWithDefault(double nDefault)
sal_Int32 ScInterpreter::GetInt32() sal_Int32 ScInterpreter::GetInt32()
{ {
double fVal = GetDouble(); double fVal = GetDouble();
if (rtl::math::isNan(fVal)) if (!rtl::math::isFinite(fVal))
{ {
SetError(errIllegalArgument); SetError( GetDoubleErrorValue( fVal));
return SAL_MAX_INT32; return SAL_MAX_INT32;
} }
if (fVal > 0.0) if (fVal > 0.0)
...@@ -2178,9 +2178,9 @@ sal_Int32 ScInterpreter::GetInt32() ...@@ -2178,9 +2178,9 @@ sal_Int32 ScInterpreter::GetInt32()
sal_Int32 ScInterpreter::GetInt32WithDefault( sal_Int32 nDefault ) sal_Int32 ScInterpreter::GetInt32WithDefault( sal_Int32 nDefault )
{ {
double fVal = GetDoubleWithDefault( nDefault); double fVal = GetDoubleWithDefault( nDefault);
if (rtl::math::isNan(fVal)) if (!rtl::math::isFinite(fVal))
{ {
SetError(errIllegalArgument); SetError( GetDoubleErrorValue( fVal));
return SAL_MAX_INT32; return SAL_MAX_INT32;
} }
if (fVal > 0.0) if (fVal > 0.0)
...@@ -2207,9 +2207,9 @@ sal_Int32 ScInterpreter::GetInt32WithDefault( sal_Int32 nDefault ) ...@@ -2207,9 +2207,9 @@ sal_Int32 ScInterpreter::GetInt32WithDefault( sal_Int32 nDefault )
sal_Int16 ScInterpreter::GetInt16() sal_Int16 ScInterpreter::GetInt16()
{ {
double fVal = GetDouble(); double fVal = GetDouble();
if (rtl::math::isNan(fVal)) if (!rtl::math::isFinite(fVal))
{ {
SetError(errIllegalArgument); SetError( GetDoubleErrorValue( fVal));
return SAL_MAX_INT16; return SAL_MAX_INT16;
} }
if (fVal > 0.0) if (fVal > 0.0)
...@@ -2236,7 +2236,12 @@ sal_Int16 ScInterpreter::GetInt16() ...@@ -2236,7 +2236,12 @@ sal_Int16 ScInterpreter::GetInt16()
sal_uInt32 ScInterpreter::GetUInt32() sal_uInt32 ScInterpreter::GetUInt32()
{ {
double fVal = rtl::math::approxFloor( GetDouble()); double fVal = rtl::math::approxFloor( GetDouble());
if (rtl::math::isNan(fVal) || fVal < 0.0 || fVal > SAL_MAX_UINT32) if (!rtl::math::isFinite(fVal))
{
SetError( GetDoubleErrorValue( fVal));
return SAL_MAX_UINT32;
}
if (fVal < 0.0 || fVal > SAL_MAX_UINT32)
{ {
SetError( errIllegalArgument); SetError( errIllegalArgument);
return SAL_MAX_UINT32; return SAL_MAX_UINT32;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment