summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-09-25 13:42:04 +0200
committerŁukasz Hryniuk <lukasz.hryniuk@wp.pl>2015-09-25 13:18:43 +0000
commit38db1a25a9c68ce9fe6d5a8f9af74c487daa9f2a (patch)
tree03f93f8afd921fe14db1449f9faf9e184d4a8cab /sc
parentbda6cdbb1735674f7372520ddd710709a995c054 (diff)
fix IterateMatrix for ifPRODUCT and ifSUMSQ
... if more than one argument is passed to PRODUCT() or SUMSQ() and matrix/array arguments are involved the functions returned wrong results. For example, wrong behavior =PRODUCT({2,3},{4,5}) gave 6 =SUMSQ({2,3},{4,5}) gave 34 Correct is =PRODUCT({2,3},{4,5}) result 120 =SUMSQ({2,3},{4,5}) result 54 Change-Id: Iec7b136a5cc678416f28b1abfe19cd0901ef22b6 (cherry picked from commit c1780ad265ce5f6abb3b91a4f70bf2b3d7a47149) Reviewed-on: https://gerrit.libreoffice.org/18867 Reviewed-by: Łukasz Hryniuk <lukasz.hryniuk@wp.pl> Tested-by: Łukasz Hryniuk <lukasz.hryniuk@wp.pl>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/tool/interpr6.cxx3
1 files changed, 2 insertions, 1 deletions
diff --git a/sc/source/core/tool/interpr6.cxx b/sc/source/core/tool/interpr6.cxx
index 7eac4eb90f73..f9d511c2556b 100644
--- a/sc/source/core/tool/interpr6.cxx
+++ b/sc/source/core/tool/interpr6.cxx
@@ -387,7 +387,7 @@ void IterateMatrix(
case ifPRODUCT:
{
ScMatrix::IterateResult aRes = pMat->Product(bTextAsZero);
- fRes = aRes.mfFirst;
+ fRes *= aRes.mfFirst;
fRes *= aRes.mfRest;
rCount += aRes.mnCount;
}
@@ -395,6 +395,7 @@ void IterateMatrix(
case ifSUMSQ:
{
ScMatrix::IterateResult aRes = pMat->SumSquare(bTextAsZero);
+ fRes += aRes.mfFirst;
fRes += aRes.mfRest;
rCount += aRes.mnCount;
}