Examples of errors detected by the V1023 diagnostic
V1023. A pointer without owner is added to the container by the 'emplace_back' method. A memory leak will occur in case of an exception.
LLVM/Clang
V1023 [CWE-460] A pointer without owner is added to the 'Strategies' container by the 'emplace_back' method. A memory leak will occur in case of an exception. llvm-isel-fuzzer.cpp 58
std::unique_ptr<IRMutator> createISelMutator() {
....
std::vector<std::unique_ptr<IRMutationStrategy>> Strategies;
Strategies.emplace_back(
new InjectorIRStrategy(InjectorIRStrategy::getDefaultOps()));
....
}
Similar errors can be found in some other places:
- V1023 [CWE-460] A pointer without owner is added to the 'Passes' container by the 'emplace_back' method. A memory leak will occur in case of an exception. PassManager.h 546
- V1023 [CWE-460] A pointer without owner is added to the 'AAs' container by the 'emplace_back' method. A memory leak will occur in case of an exception. AliasAnalysis.h 324
- V1023 [CWE-460] A pointer without owner is added to the 'Entries' container by the 'emplace_back' method. A memory leak will occur in case of an exception. DWARFDebugFrame.cpp 519
- And 18 additional diagnostic messages.
Dlib
V1023 A pointer without owner is added to the 'epa' container by the 'emplace_back' method. A memory leak will occur in case of an exception. tensor_tools.h 1665
void set(std::vector<tensor*> items)
{
....
epa.emplace_back(new enable_peer_access(*g[0], *g[i]));
....
}
iutest
V1023 A pointer without owner is added to the 'pools' container by the 'emplace_back' method. A memory leak will occur in case of an exception. entt.hpp 17114
template<typename Event>
pool_handler<Event> & assure() {
....
return static_cast<pool_handler<Event> &>(it == pools.cend() ?
*pools.emplace_back(new pool_handler<Event>{}) : **it);
....
}
Similar errors can be found in some other places:
- V1023 A pointer without owner is added to the 'pools' container by the 'emplace_back' method. A memory leak will occur in case of an exception. entt.hpp 17407
Protocol Buffers
V1023 [CWE-460] A pointer without owner is added to the 'vec' container by the 'emplace_back' method. A memory leak will occur in case of an exception. text_format.cc 152
TextFormat::ParseInfoTree* TextFormat::ParseInfoTree::CreateNested(
const FieldDescriptor* field) {
// Owned by us in the map.
auto& vec = nested_[field];
vec.emplace_back(new TextFormat::ParseInfoTree());
return vec.back().get();
}
Similar errors can be found in some other places:
- V1023 [CWE-460] A pointer without owner is added to the 'string_values_' container by the 'emplace_back' method. A memory leak will occur in case of an exception. default_value_objectwriter.cc 155
- V1023 [CWE-460] A pointer without owner is added to the 'string_values_' container by the 'emplace_back' method. A memory leak will occur in case of an exception. default_value_objectwriter.cc 168
- V1023 [CWE-460] A pointer without owner is added to the 'garbage_bin_' container by the 'emplace_back' method. A memory leak will occur in case of an exception. scc.h 85
- And 4 additional diagnostic messages.
VCMI
V1023 A pointer without owner is added to the 'modificators' container by the 'emplace_back' method. A memory leak will occur in case of an exception. Zone.h 122
template <class T>
void addModificator()
{
modificators.emplace_back(new T(*this, map, generator));
}
YTsaurus
V1023 A pointer without owner is added to the 'BlockWriters_' container by the 'emplace_back' method. A memory leak will occur in case of an exception. schemaless_chunk_writer.cpp:1374
....
std::vector<std::unique_ptr<THorizontalBlockWriter>> BlockWriters_;
....
class TPartitionMultiChunkWriter
: public TSchemalessMultiChunkWriterBase
{
....
TPartitionMultiChunkWriter(....) : ....
{
....
for (int partitionIndex = 0;
partitionIndex < partitionCount;
++partitionIndex)
{
BlockWriters_.emplace_back(
new THorizontalBlockWriter(Schema_, BlockReserveSize_)
);
....
}
....
}
}
YTsaurus
V1023 A pointer without owner is added to the 'Batches_' container by the 'emplace_back' method. A memory leak will occur in case of an exception. tablet_request_batcher.cpp:244:1
TBatch* GetBatch()
{
if (IsNewBatchNeeded())
{
Batches_.emplace_back(new TBatch()); // <=
}
return Batches_.back().get();
}