tdf#149655 Crash: "Helplines while moving" crashes debug-build
regression from
commit a447b5b6d1114111c92e5e3e3f3ae83d4c2f3bca
Author: Noel Grandin <noel.grandin@collabora.co.uk>
Date: Mon Jun 13 18:46:45 2022 +0200
loplugin:moveit
calling std::move() on an otl::cow_wrapper apparently leaves it in a
state where calling anything else on it will SIGSEGV.
Change-Id: I00d53a6283f360e3d64c81f5e79075c8ac5a99e8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136341
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/svx/source/sdr/overlay/overlaytools.cxx b/svx/source/sdr/overlay/overlaytools.cxx
index c669f52..6e29d9c 100644
--- a/svx/source/sdr/overlay/overlaytools.cxx
+++ b/svx/source/sdr/overlay/overlaytools.cxx
@@ -529,50 +529,50 @@ sal_uInt32 OverlayStaticRectanglePrimitive::getPrimitive2DID() const
if(getViewport().isEmpty())
return;
basegfx::B2DPolygon aLine;
// Left lines
aLine.append(basegfx::B2DPoint(getViewport().getMinX(), getRollingRectangle().getMinY()));
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getRollingRectangle().getMinY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
basegfx::B2DPolygon aLine1;
aLine1.append(basegfx::B2DPoint(getViewport().getMinX(), getRollingRectangle().getMinY()));
aLine1.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getRollingRectangle().getMinY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine1), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
aLine.clear();
aLine.append(basegfx::B2DPoint(getViewport().getMinX(), getRollingRectangle().getMaxY()));
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getRollingRectangle().getMaxY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
basegfx::B2DPolygon aLine2;
aLine2.append(basegfx::B2DPoint(getViewport().getMinX(), getRollingRectangle().getMaxY()));
aLine2.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getRollingRectangle().getMaxY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine2), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
// Right lines
aLine.clear();
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getRollingRectangle().getMinY()));
aLine.append(basegfx::B2DPoint(getViewport().getMaxX(), getRollingRectangle().getMinY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
basegfx::B2DPolygon aLine3;
aLine3.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getRollingRectangle().getMinY()));
aLine3.append(basegfx::B2DPoint(getViewport().getMaxX(), getRollingRectangle().getMinY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine3), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
aLine.clear();
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getRollingRectangle().getMaxY()));
aLine.append(basegfx::B2DPoint(getViewport().getMaxX(), getRollingRectangle().getMaxY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
basegfx::B2DPolygon aLine4;
aLine4.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getRollingRectangle().getMaxY()));
aLine4.append(basegfx::B2DPoint(getViewport().getMaxX(), getRollingRectangle().getMaxY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine4), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
// Top lines
aLine.clear();
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getViewport().getMinY()));
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getRollingRectangle().getMinY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
basegfx::B2DPolygon aLine5;
aLine5.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getViewport().getMinY()));
aLine5.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getRollingRectangle().getMinY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine5), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
aLine.clear();
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getViewport().getMinY()));
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getRollingRectangle().getMinY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
basegfx::B2DPolygon aLine6;
aLine6.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getViewport().getMinY()));
aLine6.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getRollingRectangle().getMinY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine6), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
// Bottom lines
aLine.clear();
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getRollingRectangle().getMaxY()));
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getViewport().getMaxY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
basegfx::B2DPolygon aLine7;
aLine7.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getRollingRectangle().getMaxY()));
aLine7.append(basegfx::B2DPoint(getRollingRectangle().getMinX(), getViewport().getMaxY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine7), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
aLine.clear();
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getRollingRectangle().getMaxY()));
aLine.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getViewport().getMaxY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
basegfx::B2DPolygon aLine8;
aLine8.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getRollingRectangle().getMaxY()));
aLine8.append(basegfx::B2DPoint(getRollingRectangle().getMaxX(), getViewport().getMaxY()));
rContainer.push_back(new PolygonMarkerPrimitive2D(std::move(aLine8), getRGBColorA(), getRGBColorB(), getDiscreteDashLength()));
}