[Libreoffice-commits] core.git: include/vcl vcl/source
Noel Grandin
noel.grandin at collabora.co.uk
Mon Apr 23 09:46:12 UTC 2018
include/vcl/BitmapConvolutionMatrixFilter.hxx | 13 +++----------
include/vcl/BitmapSharpenFilter.hxx | 6 +-----
vcl/source/bitmap/BitmapConvolutionMatrixFilter.cxx | 9 ++++++++-
3 files changed, 12 insertions(+), 16 deletions(-)
New commits:
commit 6122f6266c61db851d7595aeb824502172b509b2
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Mon Apr 23 10:41:45 2018 +0200
fix memory management in BitmapConvolutionMatrixFilter
was deleting a stack allocated buffer.
Also
(*) drop the BitmapConvolutionMatrixFilter default constructor, the
current code does not permit mpMatrix to be nullptr
(*) declare the mpMatrix field as a reference to a fixed length array,
to be more precise
(*) pass the array in the constructor so that call sites will be
properly type- and length-checked.
Change-Id: I650d56cdfac0dae4ea77df7c0c03e19d658c00c8
Reviewed-on: https://gerrit.libreoffice.org/53312
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/include/vcl/BitmapConvolutionMatrixFilter.hxx b/include/vcl/BitmapConvolutionMatrixFilter.hxx
index a2189326322b..cae8c3d8a91c 100644
--- a/include/vcl/BitmapConvolutionMatrixFilter.hxx
+++ b/include/vcl/BitmapConvolutionMatrixFilter.hxx
@@ -20,22 +20,15 @@ class BitmapEx;
class VCL_DLLPUBLIC BitmapConvolutionMatrixFilter : public BitmapFilter
{
public:
- BitmapConvolutionMatrixFilter()
- : mpMatrix(nullptr)
+ BitmapConvolutionMatrixFilter(const long (&rMatrix)[9])
+ : mrMatrix(rMatrix)
{
}
- BitmapConvolutionMatrixFilter(const long* pMatrix)
- : mpMatrix(pMatrix)
- {
- }
-
- ~BitmapConvolutionMatrixFilter() override { delete mpMatrix; }
-
virtual BitmapEx execute(BitmapEx const& rBitmapEx) override;
protected:
- const long* mpMatrix;
+ const long (&mrMatrix)[9];
};
#endif
diff --git a/include/vcl/BitmapSharpenFilter.hxx b/include/vcl/BitmapSharpenFilter.hxx
index 7e965976d5e8..66cb56f3a1d5 100644
--- a/include/vcl/BitmapSharpenFilter.hxx
+++ b/include/vcl/BitmapSharpenFilter.hxx
@@ -16,11 +16,7 @@
class VCL_DLLPUBLIC BitmapSharpenFilter : public BitmapConvolutionMatrixFilter
{
public:
- BitmapSharpenFilter()
- {
- const long pSharpenMatrix[] = { -1, -1, -1, -1, 16, -1, -1, -1, -1 };
- mpMatrix = &pSharpenMatrix[0];
- }
+ BitmapSharpenFilter();
};
#endif
diff --git a/vcl/source/bitmap/BitmapConvolutionMatrixFilter.cxx b/vcl/source/bitmap/BitmapConvolutionMatrixFilter.cxx
index fea2e6dac4f4..bb1a1932c763 100644
--- a/vcl/source/bitmap/BitmapConvolutionMatrixFilter.cxx
+++ b/vcl/source/bitmap/BitmapConvolutionMatrixFilter.cxx
@@ -14,6 +14,7 @@
#include <vcl/bitmapex.hxx>
#include <vcl/bitmapaccess.hxx>
#include <vcl/BitmapConvolutionMatrixFilter.hxx>
+#include <vcl/BitmapSharpenFilter.hxx>
#include <bitmapwriteaccess.hxx>
@@ -53,7 +54,7 @@ BitmapEx BitmapConvolutionMatrixFilter::execute(BitmapEx const& rBitmapEx)
// create LUT of products of matrix value and possible color component values
for (nY = 0; nY < 9; nY++)
{
- for (nX = nTmp = 0, nMatrixVal = mpMatrix[nY]; nX < 256; nX++, nTmp += nMatrixVal)
+ for (nX = nTmp = 0, nMatrixVal = mrMatrix[nY]; nX < 256; nX++, nTmp += nMatrixVal)
{
pKoeff[nY][nX] = nTmp;
}
@@ -196,4 +197,10 @@ BitmapEx BitmapConvolutionMatrixFilter::execute(BitmapEx const& rBitmapEx)
return BitmapEx();
}
+static const long g_SharpenMatrix[] = { -1, -1, -1, -1, 16, -1, -1, -1, -1 };
+
+BitmapSharpenFilter::BitmapSharpenFilter()
+ : BitmapConvolutionMatrixFilter(g_SharpenMatrix)
+{
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list