[Libreoffice-commits] .: 2 commits - sc/source
Eike Rathke
erack at kemper.freedesktop.org
Wed Jun 27 07:54:47 PDT 2012
sc/source/core/tool/interpr1.cxx | 17 +++++++----------
sc/source/core/tool/interpr4.cxx | 7 +++++++
2 files changed, 14 insertions(+), 10 deletions(-)
New commits:
commit b709845e27db0f439c430c9ebe3c2884dbc48789
Author: Eike Rathke <erack at redhat.com>
Date: Wed Jun 27 16:29:02 2012 +0200
resolved fdo#51478 handle array context in T()
Note that Excel for T() does not use position dependent range
intersection (SingleRef of DoubleRef) when a range reference is passed
and does not handle evaluation in array context (instead top left value
is always used), which both is inconsistent with other functions taking
a scalar value parameter. ODFF does not specify this function different.
range intersection was already implemented, this change adds array
evaluation. Gnumeric does the same.
Change-Id: I4acae943fde247c6d60b55d0f8514fb17d401f40
diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index a7f6572..2508b25 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -3082,20 +3082,17 @@ void ScInterpreter::ScT()
}
}
break;
+ case svMatrix:
case svExternalSingleRef:
case svExternalDoubleRef:
{
- ScMatrixRef pMat = GetMatrix();
- if (!pMat || !pMat->GetElementCount())
- {
- SetError( errIllegalParameter);
- break;
- }
-
- if (pMat->IsString(0, 0))
- PushString(pMat->GetString(0, 0));
+ double fVal;
+ String aStr;
+ ScMatValType nMatValType = GetDoubleOrStringFromMatrix( fVal, aStr);
+ if (ScMatrix::IsValueType( nMatValType))
+ PushString( EMPTY_STRING);
else
- PushString(EMPTY_STRING);
+ PushString( aStr);
}
break;
case svDouble :
commit 72b4cb18a402338dd65d24d9da8da7fe0fa33db0
Author: Eike Rathke <erack at redhat.com>
Date: Wed Jun 27 16:15:05 2012 +0200
propagate error in ScInterpreter::GetDoubleOrStringFromMatrix()
Change-Id: Iadba0f3a28b0a3bda9b99833510e68679d915514
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index 08d9acc..bca2977 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -2451,6 +2451,13 @@ ScMatValType ScInterpreter::GetDoubleOrStringFromMatrix( double& rDouble,
else
rString = nMatVal.GetString();
+ if (ScMatrix::IsValueType( nMatValType))
+ {
+ sal_uInt16 nError = nMatVal.GetError();
+ if (nError)
+ SetError( nError);
+ }
+
return nMatValType;
}
More information about the Libreoffice-commits
mailing list