// RUN: %clang_analyze_cc1 -w -analyzer-checker=core,cplusplus -verify %s | |
// expected-no-diagnostics | |
namespace no_crash_on_delete_dtor { | |
// We were crashing when producing diagnostics for this code. | |
struct S { | |
void foo(); | |
~S(); | |
}; | |
struct smart_ptr { | |
int x; | |
S *s; | |
smart_ptr(S *); | |
S *get() { | |
return (x || 0) ? nullptr : s; | |
} | |
}; | |
void bar(smart_ptr p) { | |
delete p.get(); | |
p.get()->foo(); | |
} | |
} // namespace no_crash_on_delete_dtor |