summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2018-04-16 16:02:17 +0200
committerAndras Timar <andras.timar@collabora.com>2018-04-17 13:18:46 +0200
commitd8b9a10d0c07e36b7cb7ad4217731105402df127 (patch)
tree61a43516c61bec54f989f61fb42a7b67beb9a52e /sc
parentc76afc032c18c5b4677eed5041016afe4df3c073 (diff)
Resolves: tdf#116003 check presence of subtotal in group, tdf#107267 follow-up
Change-Id: Ifed6e28926c689dd17914b8b1cbf47b58e2ffcdc (cherry picked from commit f50e370db8f7ae20b12e312ad89a0f9961b7ee7a) Reviewed-on: https://gerrit.libreoffice.org/52989 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> (cherry picked from commit 4b48a0b49de597fc9e9abb012fb31b6fedfee85b)
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/data/table3.cxx14
1 files changed, 11 insertions, 3 deletions
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index cf96a01a926e..d649e581782f 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -2164,11 +2164,20 @@ bool ScTable::DoSubTotals( ScSubTotalParam& rParam )
for (sal_uInt16 nLevel = 0; nLevel<nLevelCount; nLevel++)
{
+ const sal_uInt16 nGroupNo = nLevelCount - nLevel - 1;
+ const ScSubTotalFunc* pResFunc = rParam.pFunctions[nGroupNo];
+ if (!pResFunc)
+ {
+ // No subtotal function given for this group => no formula or
+ // label and do not insert a row.
+ continue;
+ }
+
// increment end row
nGlobalEndRow++;
// add row entry for formula
- aRowEntry.nGroupNo = nLevelCount - nLevel - 1;
+ aRowEntry.nGroupNo = nGroupNo;
aRowEntry.nSubStartRow = nGlobalStartRow;
aRowEntry.nFuncStart = nGlobalStartFunc;
aRowEntry.nDestRow = nGlobalEndRow;
@@ -2186,10 +2195,9 @@ bool ScTable::DoSubTotals( ScSubTotalParam& rParam )
DBShowRow(aRowEntry.nDestRow, true);
// insert label
- ScSubTotalFunc* eResFunc = rParam.pFunctions[aRowEntry.nGroupNo];
OUString label = ScGlobal::GetRscString(STR_TABLE_GRAND);
label += " ";
- label += ScGlobal::GetRscString(lcl_GetSubTotalStrId(eResFunc[0]));
+ label += ScGlobal::GetRscString(lcl_GetSubTotalStrId(pResFunc[0]));
SetString(nGroupCol[aRowEntry.nGroupNo], aRowEntry.nDestRow, nTab, label);
ApplyStyle(nGroupCol[aRowEntry.nGroupNo], aRowEntry.nDestRow, pStyle);
}