29 lines
865 B
C++
29 lines
865 B
C++
|
// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s
|
||
|
|
||
|
// expected-no-diagnostics
|
||
|
|
||
|
// Test functions that are called "memcpy" but aren't the memcpy
|
||
|
// we're looking for. Unfortunately, this test cannot be put into
|
||
|
// a namespace. The out-of-class weird memcpy needs to be recognized
|
||
|
// as a normal C function for the test to make sense.
|
||
|
typedef __typeof(sizeof(int)) size_t;
|
||
|
void *memcpy(void *, const void *, size_t);
|
||
|
|
||
|
struct S {
|
||
|
static S s1, s2;
|
||
|
|
||
|
// A weird overload within the class that accepts a structure reference
|
||
|
// instead of a pointer.
|
||
|
void memcpy(void *, const S &, size_t);
|
||
|
void test_in_class_weird_memcpy() {
|
||
|
memcpy(this, s2, 1); // no-crash
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// A similarly weird overload outside of the class.
|
||
|
void *memcpy(void *, const S &, size_t);
|
||
|
|
||
|
void test_out_of_class_weird_memcpy() {
|
||
|
memcpy(&S::s1, S::s2, 1); // no-crash
|
||
|
}
|