summaryrefslogtreecommitdiff
path: root/codemaker
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-10-29 14:25:59 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-10-31 07:31:26 +0100
commita3d5248b4e508ccacf7e90116df0bed347719e33 (patch)
treeb9249012e903ae95c766059bfa21e66ba0beadcb /codemaker
parent8003f8694ac7c4bc117f7ce692339534d37681f0 (diff)
loplugin:useuniqueptr in codemaker
Change-Id: I1d6ec5a5c06a32242773c857444bb63b7b4207b6 Reviewed-on: https://gerrit.libreoffice.org/62648 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'codemaker')
-rw-r--r--codemaker/source/javamaker/classfile.cxx6
-rw-r--r--codemaker/source/javamaker/classfile.hxx3
-rw-r--r--codemaker/source/javamaker/javatype.cxx9
3 files changed, 7 insertions, 11 deletions
diff --git a/codemaker/source/javamaker/classfile.cxx b/codemaker/source/javamaker/classfile.cxx
index 1df31aea6947..23bc000248bb 100644
--- a/codemaker/source/javamaker/classfile.cxx
+++ b/codemaker/source/javamaker/classfile.cxx
@@ -312,7 +312,7 @@ void ClassFile::Code::instrSwap() {
void ClassFile::Code::instrTableswitch(
Code const * defaultBlock, sal_Int32 low,
- std::vector< Code * > const & blocks)
+ std::vector< std::unique_ptr<Code> > const & blocks)
{
// tableswitch <0--3 byte pad> <defaultbyte1> <defaultbyte2> <defaultbyte3>
// <defaultbyte4> <lowbyte1> <lowbyte2> <lowbyte3> <lowbyte4> <highbyte1>
@@ -331,7 +331,7 @@ void ClassFile::Code::instrTableswitch(
pos2 += defaultBlock->m_code.size(); //FIXME: overflow
appendU4(m_code, static_cast< sal_uInt32 >(low));
appendU4(m_code, static_cast< sal_uInt32 >(low + (size - 1)));
- for (Code *pCode : blocks)
+ for (std::unique_ptr<Code> const & pCode : blocks)
{
if (pCode == nullptr) {
appendU4(m_code, defaultOffset);
@@ -342,7 +342,7 @@ void ClassFile::Code::instrTableswitch(
}
}
appendStream(m_code, defaultBlock->m_code);
- for (Code *pCode : blocks)
+ for (std::unique_ptr<Code> const & pCode : blocks)
{
if (pCode != nullptr) {
appendStream(m_code, pCode->m_code);
diff --git a/codemaker/source/javamaker/classfile.hxx b/codemaker/source/javamaker/classfile.hxx
index be6e3a36abe4..179fea21ef77 100644
--- a/codemaker/source/javamaker/classfile.hxx
+++ b/codemaker/source/javamaker/classfile.hxx
@@ -24,6 +24,7 @@
#include <sal/types.h>
#include <map>
+#include <memory>
#include <utility>
#include <vector>
@@ -107,7 +108,7 @@ public:
void instrTableswitch(
Code const * defaultBlock, sal_Int32 low,
- std::vector< Code * > const & blocks);
+ std::vector< std::unique_ptr<Code> > const & blocks);
void loadIntegerConstant(sal_Int32 value);
void loadStringConstant(rtl::OString const & value);
diff --git a/codemaker/source/javamaker/javatype.cxx b/codemaker/source/javamaker/javatype.cxx
index 9d683a53ce08..4cd5b50050b0 100644
--- a/codemaker/source/javamaker/javatype.cxx
+++ b/codemaker/source/javamaker/javatype.cxx
@@ -749,7 +749,7 @@ void handleEnumType(
std::unique_ptr< ClassFile::Code > defCode(cf->newCode());
defCode->instrAconstNull();
defCode->instrAreturn();
- std::vector< ClassFile::Code * > blocks;
+ std::vector< std::unique_ptr<ClassFile::Code> > blocks;
//FIXME: pointers contained in blocks may leak
sal_Int32 last = SAL_MAX_INT32;
for (const auto& pair : map)
@@ -764,14 +764,9 @@ void handleEnumType(
std::unique_ptr< ClassFile::Code > blockCode(cf->newCode());
blockCode->instrGetstatic(className, pair.second, classDescriptor);
blockCode->instrAreturn();
- blocks.push_back(blockCode.get());
- blockCode.release();
+ blocks.push_back(std::move(blockCode));
}
code->instrTableswitch(defCode.get(), min, blocks);
- for (ClassFile::Code *p : blocks)
- {
- delete p;
- }
} else{
std::unique_ptr< ClassFile::Code > defCode(cf->newCode());
defCode->instrAconstNull();