diff options
author | Eike Rathke <erack@redhat.com> | 2016-05-20 15:06:35 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2016-05-20 15:06:56 +0200 |
commit | 365c4d8c60e89fd57a91f51ca51a8796fe91edd7 (patch) | |
tree | 730eba0246fadb33a6f9df025df70923c6c631f2 /sc/source | |
parent | f053086fbc625fca8ba7b956738d33ba78a80f9b (diff) |
handle svExternalDoubleRef in all IS*() functions, tdf#93101 related
Change-Id: I48813de703ea926b8828f4e262393f7643216989
Diffstat (limited to 'sc/source')
-rw-r--r-- | sc/source/core/tool/interpr1.cxx | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 9a192eea6a2e..8c9484bdc841 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -1893,9 +1893,10 @@ bool ScInterpreter::IsString() bRes = true; } break; + case svExternalDoubleRef: case svMatrix: { - ScMatrixRef pMat = PopMatrix(); + ScMatrixRef pMat = GetMatrix(); if ( !pMat ) ; // nothing else if ( !pJumpMatrix ) @@ -2476,6 +2477,14 @@ void ScInterpreter::ScIsRef() bRes = true; } break; + case svExternalDoubleRef: + { + ScExternalRefCache::TokenArrayRef pArray; + PopExternalDoubleRef(pArray); + if (!nGlobalError) + bRes = true; + } + break; default: Pop(); } @@ -2525,9 +2534,10 @@ void ScInterpreter::ScIsValue() bRes = true; } break; + case svExternalDoubleRef: case svMatrix: { - ScMatrixRef pMat = PopMatrix(); + ScMatrixRef pMat = GetMatrix(); if ( !pMat ) ; // nothing else if ( !pJumpMatrix ) @@ -2684,9 +2694,10 @@ void ScInterpreter::ScIsNV() bRes = true; } break; + case svExternalDoubleRef: case svMatrix: { - ScMatrixRef pMat = PopMatrix(); + ScMatrixRef pMat = GetMatrix(); if ( !pMat ) ; // nothing else if ( !pJumpMatrix ) @@ -2740,9 +2751,10 @@ void ScInterpreter::ScIsErr() bRes = true; } break; + case svExternalDoubleRef: case svMatrix: { - ScMatrixRef pMat = PopMatrix(); + ScMatrixRef pMat = GetMatrix(); if ( nGlobalError || !pMat ) bRes = ((nGlobalError && nGlobalError != NOTAVAILABLE) || !pMat); else if ( !pJumpMatrix ) @@ -2804,9 +2816,10 @@ void ScInterpreter::ScIsError() bRes = true; } break; + case svExternalDoubleRef: case svMatrix: { - ScMatrixRef pMat = PopMatrix(); + ScMatrixRef pMat = GetMatrix(); if ( nGlobalError || !pMat ) bRes = true; else if ( !pJumpMatrix ) @@ -2886,9 +2899,10 @@ bool ScInterpreter::IsEven() } } break; + case svExternalDoubleRef: case svMatrix: { - ScMatrixRef pMat = PopMatrix(); + ScMatrixRef pMat = GetMatrix(); if ( !pMat ) ; // nothing else if ( !pJumpMatrix ) |