mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 05:06:06 +00:00

Fixes #62985 Fixes #58820 When 3rd-party header files are included as system headers, their overloaded `new` and `delete` operators are also considered as the std ones. However, those overloaded operator functions will also be inlined. This makes the same symbolic memory marked as released twice: during `checkPreCall` of the overloaded `delete` operator and when calling `::operator delete` after inlining the overloaded operator function (if it has). This patch attempts to fix this bug by adjusting the strategy of verifying whether the callee is a standard `new` or `delete` operator in the `isStandardNewDelete` function.
10 lines
341 B
C++
10 lines
341 B
C++
// RUN: %clang_analyze_cc1 -isystem %S/Inputs/ -verify %s \
|
|
// RUN: -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete
|
|
|
|
// RUN: %clang_analyze_cc1 -I %S/Inputs/ -verify %s \
|
|
// RUN: -analyzer-checker=core,unix.Malloc,cplusplus.NewDelete
|
|
|
|
#include "overloaded-delete-in-header.h"
|
|
|
|
void deleteInHeader(DeleteInHeader *p) { delete p; }
|