diff options
| -rw-r--r-- | ext/-test-/sanitizers/sanitizers.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/ext/-test-/sanitizers/sanitizers.c b/ext/-test-/sanitizers/sanitizers.c index bd00f0be77..97a85b26ef 100644 --- a/ext/-test-/sanitizers/sanitizers.c +++ b/ext/-test-/sanitizers/sanitizers.c @@ -14,11 +14,23 @@ asan_enabled_p(VALUE self) #endif } +static VALUE +lsan_enabled_p(VALUE self) +{ +#if defined(__has_feature) + /* clang uses __has_feature for determining LSAN */ + return __has_feature(leak_sanitizer) ? Qtrue : Qfalse; +#else + return Qfalse; +#endif +} + void Init_sanitizers(void) { VALUE m = rb_define_module("Test"); VALUE c = rb_define_class_under(m, "Sanitizers", rb_cObject); rb_define_singleton_method(c, "asan_enabled?", asan_enabled_p, 0); + rb_define_singleton_method(c, "lsan_enabled?", lsan_enabled_p, 0); } |
