diff options
| -rw-r--r-- | validation/context.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/validation/context.c b/validation/context.c index 165d4f63..c3527dae 100644 --- a/validation/context.c +++ b/validation/context.c @@ -1,3 +1,5 @@ +#define __cond_lock(c) ((c) ? ({ __context__(1); 1; }) : 0) + void a(void) __attribute__((context(0,1))) { __context__(1); @@ -8,6 +10,9 @@ void r(void) __attribute__((context(1,0))) __context__(-1); } +extern void _ca(int fail); +#define ca(fail) __cond_lock(_ca(fail)) + void good_paired1(void) { a(); @@ -294,3 +299,18 @@ void warn_goto3(void) label: r(); } + +void good_cond_lock1(void) +{ + if(ca(condition)) { + condition2 = 1; /* do stuff */ + r(); + } +} + +void warn_cond_lock1(void) +{ + if(ca(condition)) + condition2 = 1; /* do stuff */ + r(); +} |
