fuchsia_lock_impl.c
399 Bytes
// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.fuchsia.Lock -verify %s
// expected-no-diagnostics
typedef int spin_lock_t;
void spin_lock(spin_lock_t *lock);
int getCond();
int spin_trylock(spin_lock_t *lock) {
if (getCond())
return 0;
return -1;
}
void spin_unlock(spin_lock_t *lock);
spin_lock_t mtx;
void no_crash() {
if (spin_trylock(&mtx) == 0)
spin_unlock(&mtx);
}