summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi Abe <tabe@fixedpoint.jp>2014-06-27 16:04:18 +0900
committerTakeshi Abe <tabe@fixedpoint.jp>2014-06-27 16:36:29 +0900
commitc60f6227f826968f1c937758130ff1d18459d553 (patch)
tree40d38fc6b58feeaa6c262b375b61fcf225f86318
parent822cf7cb24eaa11ed3aa8d243370fba5bf6af889 (diff)
Avoid possible memory leaks in case of exceptions
Change-Id: I1d703da6c0f9fd1a7e2423cc609fb504bb553382
-rw-r--r--svx/source/sdr/contact/objectcontactofobjlistpainter.cxx7
-rw-r--r--svx/source/sdr/contact/objectcontactofpageview.cxx6
-rw-r--r--svx/source/sdr/contact/viewcontactofe3dcube.cxx7
-rw-r--r--svx/source/sdr/contact/viewcontactofe3dextrude.cxx7
-rw-r--r--svx/source/sdr/contact/viewcontactofe3dlathe.cxx7
-rw-r--r--svx/source/sdr/contact/viewcontactofe3dpolygon.cxx7
-rw-r--r--svx/source/sdr/contact/viewcontactofe3dsphere.cxx7
-rw-r--r--svx/source/sdr/overlay/overlaymanager.cxx8
-rw-r--r--svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx10
9 files changed, 25 insertions, 41 deletions
diff --git a/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx b/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx
index 493ad02d3e5d..eadd8a77dbef 100644
--- a/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx
+++ b/svx/source/sdr/contact/objectcontactofobjlistpainter.cxx
@@ -27,7 +27,7 @@
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <drawinglayer/processor2d/processor2dtools.hxx>
#include <svx/unoapi.hxx>
-
+#include <boost/scoped_ptr.hpp>
namespace sdr
@@ -127,14 +127,13 @@ namespace sdr
// if there is something to show, use a vclProcessor to render it
if(xPrimitiveSequence.hasElements())
{
- drawinglayer::processor2d::BaseProcessor2D* pProcessor2D = drawinglayer::processor2d::createProcessor2DFromOutputDevice(
+ boost::scoped_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor2D(drawinglayer::processor2d::createProcessor2DFromOutputDevice(
*pTargetDevice,
- getViewInformation2D());
+ getViewInformation2D()));
if(pProcessor2D)
{
pProcessor2D->process(xPrimitiveSequence);
- delete pProcessor2D;
}
}
}
diff --git a/svx/source/sdr/contact/objectcontactofpageview.cxx b/svx/source/sdr/contact/objectcontactofpageview.cxx
index 864e73023f8c..dbd43d30b57e 100644
--- a/svx/source/sdr/contact/objectcontactofpageview.cxx
+++ b/svx/source/sdr/contact/objectcontactofpageview.cxx
@@ -37,6 +37,7 @@
#include <svx/unoapi.hxx>
#include "eventhandler.hxx"
+#include <boost/scoped_ptr.hpp>
using namespace com::sun::star;
@@ -284,14 +285,13 @@ namespace sdr
pOutDev->SetLayoutMode(0); // reset, default is no BiDi/RTL
// create renderer
- drawinglayer::processor2d::BaseProcessor2D* pProcessor2D =
+ boost::scoped_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor2D(
drawinglayer::processor2d::createProcessor2DFromOutputDevice(
- rTargetOutDev, getViewInformation2D());
+ rTargetOutDev, getViewInformation2D()));
if(pProcessor2D)
{
pProcessor2D->process(xPrimitiveSequence);
- delete pProcessor2D;
}
}
diff --git a/svx/source/sdr/contact/viewcontactofe3dcube.cxx b/svx/source/sdr/contact/viewcontactofe3dcube.cxx
index 94c9776448f7..c717c04feccc 100644
--- a/svx/source/sdr/contact/viewcontactofe3dcube.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3dcube.cxx
@@ -24,7 +24,7 @@
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
#include <sdr/primitive3d/sdrattributecreator3d.hxx>
#include <basegfx/range/b3drange.hxx>
-
+#include <boost/scoped_ptr.hpp>
namespace sdr
@@ -71,7 +71,7 @@ namespace sdr
aWorldTransform.translate(aCubeRange.getMinX(), aCubeRange.getMinY(), aCubeRange.getMinZ());
// get 3D Object Attributes
- drawinglayer::attribute::Sdr3DObjectAttribute* pSdr3DObjectAttribute = drawinglayer::primitive2d::createNewSdr3DObjectAttribute(rItemSet);
+ boost::scoped_ptr<drawinglayer::attribute::Sdr3DObjectAttribute> pSdr3DObjectAttribute(drawinglayer::primitive2d::createNewSdr3DObjectAttribute(rItemSet));
// calculate texture size to get a perfect mapping for
// the front/back sides
@@ -83,9 +83,6 @@ namespace sdr
aWorldTransform, aTextureSize, aAttribute, *pSdr3DObjectAttribute));
xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
- // delete 3D Object Attributes
- delete pSdr3DObjectAttribute;
-
return xRetval;
}
} // end of namespace contact
diff --git a/svx/source/sdr/contact/viewcontactofe3dextrude.cxx b/svx/source/sdr/contact/viewcontactofe3dextrude.cxx
index f9110bc48127..cf4132e30f82 100644
--- a/svx/source/sdr/contact/viewcontactofe3dextrude.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3dextrude.cxx
@@ -24,7 +24,7 @@
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
#include <sdr/primitive3d/sdrattributecreator3d.hxx>
#include <basegfx/polygon/b2dpolypolygontools.hxx>
-
+#include <boost/scoped_ptr.hpp>
namespace sdr
@@ -51,7 +51,7 @@ namespace sdr
const basegfx::B2DPolyPolygon aPolyPolygon(GetE3dExtrudeObj().GetExtrudePolygon());
// get 3D Object Attributes
- drawinglayer::attribute::Sdr3DObjectAttribute* pSdr3DObjectAttribute = drawinglayer::primitive2d::createNewSdr3DObjectAttribute(rItemSet);
+ boost::scoped_ptr<drawinglayer::attribute::Sdr3DObjectAttribute> pSdr3DObjectAttribute(drawinglayer::primitive2d::createNewSdr3DObjectAttribute(rItemSet));
// calculate texture size; use size of top/bottom cap to get a perfect mapping
// for the caps. The in-between geometry will get a stretched size with a
@@ -78,9 +78,6 @@ namespace sdr
bCharacterMode, bCloseFront, bCloseBack));
xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
- // delete 3D Object Attributes
- delete pSdr3DObjectAttribute;
-
return xRetval;
}
} // end of namespace contact
diff --git a/svx/source/sdr/contact/viewcontactofe3dlathe.cxx b/svx/source/sdr/contact/viewcontactofe3dlathe.cxx
index 72d290bc6131..1f227745e4e0 100644
--- a/svx/source/sdr/contact/viewcontactofe3dlathe.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3dlathe.cxx
@@ -24,7 +24,7 @@
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
#include <sdr/primitive3d/sdrattributecreator3d.hxx>
#include <basegfx/polygon/b2dpolygontools.hxx>
-
+#include <boost/scoped_ptr.hpp>
namespace sdr
@@ -51,7 +51,7 @@ namespace sdr
const basegfx::B2DPolyPolygon aPolyPolygon(GetE3dLatheObj().GetPolyPoly2D());
// get 3D Object Attributes
- drawinglayer::attribute::Sdr3DObjectAttribute* pSdr3DObjectAttribute = drawinglayer::primitive2d::createNewSdr3DObjectAttribute(rItemSet);
+ boost::scoped_ptr<drawinglayer::attribute::Sdr3DObjectAttribute> pSdr3DObjectAttribute(drawinglayer::primitive2d::createNewSdr3DObjectAttribute(rItemSet));
// calculate texture size. Use the polygon length of the longest polygon for
// height and the rotated radius for width (using polygon center) to get a good
@@ -93,9 +93,6 @@ namespace sdr
bSmoothNormals, true, bSmoothLids, bCharacterMode, bCloseFront, bCloseBack));
xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
- // delete 3D Object Attributes
- delete pSdr3DObjectAttribute;
-
return xRetval;
}
} // end of namespace contact
diff --git a/svx/source/sdr/contact/viewcontactofe3dpolygon.cxx b/svx/source/sdr/contact/viewcontactofe3dpolygon.cxx
index ca24df8fcbc0..9a281921aa23 100644
--- a/svx/source/sdr/contact/viewcontactofe3dpolygon.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3dpolygon.cxx
@@ -25,7 +25,7 @@
#include <sdr/primitive3d/sdrattributecreator3d.hxx>
#include <basegfx/polygon/b3dpolygon.hxx>
#include <basegfx/polygon/b3dpolypolygontools.hxx>
-
+#include <boost/scoped_ptr.hpp>
namespace sdr
@@ -99,7 +99,7 @@ namespace sdr
}
// get 3D Object Attributes
- drawinglayer::attribute::Sdr3DObjectAttribute* pSdr3DObjectAttribute = drawinglayer::primitive2d::createNewSdr3DObjectAttribute(rItemSet);
+ boost::scoped_ptr<drawinglayer::attribute::Sdr3DObjectAttribute> pSdr3DObjectAttribute(drawinglayer::primitive2d::createNewSdr3DObjectAttribute(rItemSet));
// calculate texture size
basegfx::B2DVector aTextureSize(1.0, 1.0);
@@ -164,9 +164,6 @@ namespace sdr
aPolyPolygon3D, aWorldTransform, aTextureSize, aAttribute, *pSdr3DObjectAttribute));
xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
- // delete 3D Object Attributes
- delete pSdr3DObjectAttribute;
-
return xRetval;
}
} // end of namespace contact
diff --git a/svx/source/sdr/contact/viewcontactofe3dsphere.cxx b/svx/source/sdr/contact/viewcontactofe3dsphere.cxx
index 60fa51d6b574..96c286bbcc86 100644
--- a/svx/source/sdr/contact/viewcontactofe3dsphere.cxx
+++ b/svx/source/sdr/contact/viewcontactofe3dsphere.cxx
@@ -23,7 +23,7 @@
#include <drawinglayer/primitive3d/sdrsphereprimitive3d.hxx>
#include <svx/sdr/primitive2d/sdrattributecreator.hxx>
#include <sdr/primitive3d/sdrattributecreator3d.hxx>
-
+#include <boost/scoped_ptr.hpp>
namespace sdr
@@ -57,7 +57,7 @@ namespace sdr
aWorldTransform.translate(aSpherePosition.getX(), aSpherePosition.getY(), aSpherePosition.getZ());
// get 3D Object Attributes
- drawinglayer::attribute::Sdr3DObjectAttribute* pSdr3DObjectAttribute = drawinglayer::primitive2d::createNewSdr3DObjectAttribute(rItemSet);
+ boost::scoped_ptr<drawinglayer::attribute::Sdr3DObjectAttribute> pSdr3DObjectAttribute(drawinglayer::primitive2d::createNewSdr3DObjectAttribute(rItemSet));
// get segment count
const sal_uInt32 nHorizontalSegments(GetE3dSphereObj().GetHorizontalSegments());
@@ -76,9 +76,6 @@ namespace sdr
nHorizontalSegments, nVerticalSegments));
xRetval = drawinglayer::primitive3d::Primitive3DSequence(&xReference, 1);
- // delete 3D Object Attributes
- delete pSdr3DObjectAttribute;
-
return xRetval;
}
} // end of namespace contact
diff --git a/svx/source/sdr/overlay/overlaymanager.cxx b/svx/source/sdr/overlay/overlaymanager.cxx
index bcd2818d8fa5..e2f2b2bfa625 100644
--- a/svx/source/sdr/overlay/overlaymanager.cxx
+++ b/svx/source/sdr/overlay/overlaymanager.cxx
@@ -26,7 +26,7 @@
#include <svx/sdr/overlay/overlayobject.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <drawinglayer/processor2d/processor2dtools.hxx>
-
+#include <boost/scoped_ptr.hpp>
using namespace com::sun::star;
@@ -47,9 +47,9 @@ namespace sdr
const bool bIsAntiAliasing(getDrawinglayerOpt().IsAntiAliasing());
// create processor
- drawinglayer::processor2d::BaseProcessor2D* pProcessor = drawinglayer::processor2d::createProcessor2DFromOutputDevice(
+ boost::scoped_ptr<drawinglayer::processor2d::BaseProcessor2D> pProcessor(drawinglayer::processor2d::createProcessor2DFromOutputDevice(
rDestinationDevice,
- getCurrentViewInformation2D());
+ getCurrentViewInformation2D()));
if(pProcessor)
{
@@ -81,7 +81,7 @@ namespace sdr
}
}
- delete pProcessor;
+ pProcessor.reset();
}
// restore AA settings
diff --git a/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
index ea9ae60597b6..1c0040bbb6d6 100644
--- a/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrmeasureprimitive2d.cxx
@@ -28,7 +28,7 @@
#include <svx/sdr/primitive2d/svx_primitivetypes2d.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
#include <drawinglayer/primitive2d/hiddengeometryprimitive2d.hxx>
-
+#include <boost/scoped_ptr.hpp>
using namespace com::sun::star;
@@ -86,7 +86,7 @@ namespace drawinglayer
Primitive2DSequence SdrMeasurePrimitive2D::create2DDecomposition(const geometry::ViewInformation2D& aViewInformation) const
{
Primitive2DSequence aRetval;
- SdrBlockTextPrimitive2D* pBlockText = 0;
+ boost::scoped_ptr<SdrBlockTextPrimitive2D> pBlockText;
basegfx::B2DRange aTextRange;
double fTextX((getStart().getX() + getEnd().getX()) * 0.5);
double fTextY((getStart().getX() + getEnd().getX()) * 0.5);
@@ -125,7 +125,7 @@ namespace drawinglayer
}
// create primitive and get text range
- pBlockText = new SdrBlockTextPrimitive2D(
+ pBlockText.reset(new SdrBlockTextPrimitive2D(
&rTextAttribute.getSdrText(),
rTextAttribute.getOutlinerParaObject(),
aTextMatrix,
@@ -135,7 +135,7 @@ namespace drawinglayer
false,
false,
false,
- false);
+ false));
aTextRange = pBlockText->getB2DRange(aViewInformation);
}
@@ -421,7 +421,7 @@ namespace drawinglayer
// apply to existing text primitive
SdrTextPrimitive2D* pNewBlockText = pBlockText->createTransformedClone(aChange);
OSL_ENSURE(pNewBlockText, "SdrMeasurePrimitive2D::create2DDecomposition: Could not create transformed clone of text primitive (!)");
- delete pBlockText;
+ pBlockText.reset();
// add to local primitives
appendPrimitive2DReferenceToPrimitive2DSequence(aRetval, Primitive2DReference(pNewBlockText));