[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - sc/source
Winfried Donkers
winfrieddonkers at libreoffice.org
Fri Feb 13 04:50:05 PST 2015
sc/source/core/tool/interpr1.cxx | 6 ++++--
sc/source/core/tool/interpr4.cxx | 5 ++++-
2 files changed, 8 insertions(+), 3 deletions(-)
New commits:
commit 3f7558360c4805076a1705c204c9e8dba12b7358
Author: Winfried Donkers <winfrieddonkers at libreoffice.org>
Date: Wed Feb 11 09:32:09 2015 +0100
tdf#88576 fix handling of empty arguments in IF(), IFERROR() and IFNA()
Reviewed-on: https://gerrit.libreoffice.org/14415
Reviewed-by: Eike Rathke <erack at redhat.com>
Tested-by: Eike Rathke <erack at redhat.com>
(cherry picked from commit 0b75eda1090f92adc678ceff2565da2dc7d9328c)
tdf#88576 check that two parameters are given for IFERROR() and IFNA()
Otherwise the functions failed only for the error case resulting in
#NULL! error.
(cherry picked from commit 6583f4e30015164af4972921b5bb7880dfb65f65)
eb987637698ab418fc0a60cd873e23878c9f497b
Change-Id: I8acca26cf7398768a9e25f97f3a9e61754ab2179
Reviewed-on: https://gerrit.libreoffice.org/14421
Tested-by: Eike Rathke <erack at redhat.com>
Reviewed-by: Eike Rathke <erack at redhat.com>
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index f01137a..c5b1f02 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -237,9 +237,11 @@ void ScInterpreter::ScIfError( bool bNAonly )
{
const short* pJump = pCur->GetJump();
short nJumpCount = pJump[ 0 ];
- if (!sp)
+ if (!sp || nJumpCount != 2)
{
- PushError( errUnknownStackVariable);
+ // Reset nGlobalError here to not propagate the old error, if any.
+ nGlobalError = (sp ? errParameterExpected : errUnknownStackVariable);
+ PushError( nGlobalError);
aCode.Jump( pJump[ nJumpCount ], pJump[ nJumpCount ] );
return;
}
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index 2b2dd65..bbb77ca 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -3025,7 +3025,10 @@ void ScInterpreter::ScExternal()
void ScInterpreter::ScMissing()
{
- PushTempToken( new FormulaMissingToken );
+ if ( aCode.IsEndOfPath() )
+ PushTempToken( new ScEmptyCellToken( false, false ) );
+ else
+ PushTempToken( new FormulaMissingToken );
}
#if HAVE_FEATURE_SCRIPTING
More information about the Libreoffice-commits
mailing list