Issue 122405
Summary [clang-tidy] False positive diagnostic for NewDeleteLeaks
Labels clang-tidy, false-positive
Assignees
Reporter ChuanqiXu9
    Reproducer:

```C++
#include <vector>
#include <memory>

void RuleParseCommon() { std::vector{std::make_shared<int>()}; }
```

Reproducer reduced by cvise:

```C++
namespace std {
template <class E> struct initializer_list {
  const E *begin;
  const E *end;
};
template <typename _Tp> struct vector {
  vector(initializer_list<_Tp>);
};
struct _Sp_counted_base {};
struct __shared_count {
  __shared_count(int, int) {
    auto __pi = new _Sp_counted_base;
    _M_pi = __pi;
  }
  ~__shared_count();
 _Sp_counted_base *_M_pi;
};
int _M_ptr;
struct __shared_ptr {
  template <typename _Alloc>
  __shared_ptr(_Alloc __tag) : _M_refcount(_M_ptr, __tag) {}
  __shared_count _M_refcount;
};
struct shared_ptr : __shared_ptr {
 shared_ptr(int __tag) : __shared_ptr(__tag) {}
};
int allocate_shared___a;
shared_ptr allocate_shared() { return allocate_shared___a; }
shared_ptr make_shared() { return allocate_shared(); }
} // namespace std
using std::vector;

void RuleParseCommon() { vector{std::make_shared()}; }
```

Command:

```
clang-tidy test.cc -checks='clang-analyzer-cplusplus.NewDeleteLeaks' -- -std=gnu++20
```

we got:

```
Potential leak of memory pointed to by field '_M_pi' [clang-analyzer-cplusplus.NewDeleteLeaks]
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to