diff options
author | Tor Lillqvist <tml@collabora.com> | 2016-02-05 15:01:48 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2016-02-09 13:58:59 +0000 |
commit | 8e0ed97101356ba537d0f85b2971bc22eabc633b (patch) | |
tree | 1555b57d44bb6b8fa13bc615bdf6e9f3e5a6fee5 /sc | |
parent | 15d65d2d5403e471af9ad17056784a077a83beee (diff) |
tdf#97369: Fix SUMming in the software interpreter
GetRefRowSize() is not what we want, but GetArrayLength(). I think. At
least helps in the sample document. (Need a hard recalc after loading
it, though, but I assume that is expected.)
Also, fix the handling of multiple columns in the area being summed.
Change-Id: I21477ca83042a40a300bc033e4a8b74ab5fc3015
Reviewed-on: https://gerrit.libreoffice.org/22153
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/22200
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Tested-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/tool/scmatrix.cxx | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx index d3816b5e6626..6018ca1bcc2f 100644 --- a/sc/source/core/tool/scmatrix.cxx +++ b/sc/source/core/tool/scmatrix.cxx @@ -3397,13 +3397,13 @@ ScMatrix::IterateResult ScVectorRefMatrix::Sum(bool bTextAsZero) const const std::vector<formula::VectorRefArray>& rArrays = mpToken->GetArrays(); size_t nDataSize = mnRowSize; - if (mnRowStart >= mpToken->GetRefRowSize()) + if (mnRowStart >= mpToken->GetArrayLength()) { return ScMatrix::IterateResult(0.0, 0.0, 0); } - else if (nDataSize > mpToken->GetRefRowSize() + mnRowStart) + else if (nDataSize > mpToken->GetArrayLength() + mnRowStart) { - nDataSize = mpToken->GetRefRowSize() - mnRowStart; + nDataSize = mpToken->GetArrayLength() - mnRowStart; } double mfFirst = 0.0; @@ -3434,11 +3434,10 @@ ScMatrix::IterateResult ScVectorRefMatrix::Sum(bool bTextAsZero) const } } p += i; - nDataSize -= i; - if (nDataSize == 0) + if (i == nDataSize) continue; - sc::ArraySumFunctor functor(p, nDataSize); + sc::ArraySumFunctor functor(p, nDataSize-i); mfRest += functor(); } |