| // RUN: %check_clang_tidy %s cert-err52-cpp %t -- -- -std=c++11 |
| |
| typedef void *jmp_buf; |
| extern int __setjmpimpl(jmp_buf); |
| #define setjmp(x) __setjmpimpl(x) |
| [[noreturn]] extern void longjmp(jmp_buf, int); |
| |
| namespace std { |
| using ::jmp_buf; |
| using ::longjmp; |
| } |
| |
| static jmp_buf env; |
| void g() { |
| std::longjmp(env, 1); |
| // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not call 'longjmp'; consider using exception handling instead [cert-err52-cpp] |
| ::longjmp(env, 1); |
| // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not call 'longjmp'; consider using exception handling instead |
| longjmp(env, 1); |
| // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not call 'longjmp'; consider using exception handling instead |
| } |
| |
| void f() { |
| (void)setjmp(env); |
| // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: do not call 'setjmp'; consider using exception handling instead |
| } |