summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vcl/source/gdi/region.cxx16
1 files changed, 10 insertions, 6 deletions
diff --git a/vcl/source/gdi/region.cxx b/vcl/source/gdi/region.cxx
index 576ae0eb2e10..ea03d8a0787c 100644
--- a/vcl/source/gdi/region.cxx
+++ b/vcl/source/gdi/region.cxx
@@ -316,7 +316,8 @@ Region::Region(bool bIsNull)
Region::Region(const tools::Rectangle& rRect)
: mbIsNull(false)
{
- mpRegionBand.reset(rRect.IsEmpty() ? nullptr : new RegionBand(rRect));
+ if (!rRect.IsEmpty())
+ mpRegionBand = std::make_shared<RegionBand>(rRect);
}
Region::Region(const tools::Polygon& rPolygon)
@@ -437,12 +438,12 @@ void vcl::Region::Move( tools::Long nHorzMove, tools::Long nVertMove )
}
else if(getRegionBand())
{
- RegionBand* pNew = new RegionBand(*getRegionBand());
+ std::shared_ptr<RegionBand> pNew = std::make_shared<RegionBand>(*getRegionBand());
pNew->Move(nHorzMove, nVertMove);
mpB2DPolyPolygon.reset();
mpPolyPolygon.reset();
- mpRegionBand.reset(pNew);
+ mpRegionBand = std::move(pNew);
}
else
{
@@ -490,12 +491,12 @@ void vcl::Region::Scale( double fScaleX, double fScaleY )
}
else if(getRegionBand())
{
- RegionBand* pNew = new RegionBand(*getRegionBand());
+ std::shared_ptr<RegionBand> pNew = std::make_shared<RegionBand>(*getRegionBand());
pNew->Scale(fScaleX, fScaleY);
mpB2DPolyPolygon.reset();
mpPolyPolygon.reset();
- mpRegionBand.reset(pNew);
+ mpRegionBand = std::move(pNew);
}
else
{
@@ -1447,7 +1448,10 @@ Region& vcl::Region::operator=( const tools::Rectangle& rRect )
{
mpB2DPolyPolygon.reset();
mpPolyPolygon.reset();
- mpRegionBand.reset(rRect.IsEmpty() ? nullptr : new RegionBand(rRect));
+ if (!rRect.IsEmpty())
+ mpRegionBand = std::make_shared<RegionBand>(rRect);
+ else
+ mpRegionBand.reset();
mbIsNull = false;
return *this;