Kaydet (Commit) a3d5248b authored tarafından Noel Grandin's avatar Noel Grandin

loplugin:useuniqueptr in codemaker

Change-Id: I1d6ec5a5c06a32242773c857444bb63b7b4207b6
Reviewed-on: https://gerrit.libreoffice.org/62648
Tested-by: Jenkins
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 8003f869
......@@ -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);
......
......@@ -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);
......
......@@ -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();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment