From 9a10330ff8fb0499ed8b0a91563b3c7f62b94096 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Tue, 12 Jan 2021 10:13:14 +0100 Subject: [PATCH] bsc1179025.diff oox smartart: fix crash in pyra algorithm with a single child shape Regression from commit 14a56533ff2c9c859d22cd3039ada75b99e94bc0 (SmartArt Pyramid: Now lays out shapes, 2018-07-10), the added pyramid algorithm by first centering the topmost children, then decrementing the horizontal postion of each additional shape, with the end goal of having 0 horizontal position of the last children. This means that simply avoiding the division in the 1-child case leads to correct results, because in this case the only child is also the last child at the sane time. (cherry picked from commit f2e04fe98e313cffa3f98d55eae641415142a431) Change-Id: Ifd0027e9616b0909dbfde43e1555427b50de4dad --- oox/source/drawingml/diagram/diagramlayoutatoms.cxx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx index 7f926cc9a5e8..24acaf176491 100644 --- a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx +++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx @@ -1286,7 +1286,10 @@ void AlgAtom::layoutShape(const ShapePtr& rShape, const std::vector& for (auto & aCurrShape : rShape->getChildren()) { aCurrShape->setPosition(aCurrPos); - aCurrPos.X -= aChildSize.Height/(nCount-1); + if (nCount > 1) + { + aCurrPos.X -= aChildSize.Height / (nCount - 1); + } aChildSize.Width += aChildSize.Height; aCurrShape->setSize(aChildSize); aCurrShape->setChildSize(aChildSize); -- 2.26.2