diff options
| author | Peter Zhu <peter@peterzhu.ca> | 2025-10-07 21:01:59 -0400 |
|---|---|---|
| committer | Peter Zhu <peter@peterzhu.ca> | 2025-10-09 20:35:02 -0400 |
| commit | c80ff8da25333bac6beaff7b0cffd07b023f78e9 (patch) | |
| tree | 229c043a1840a7b743cafc565a35fd7854d3b78f | |
| parent | fc7fd63880dd8e22ac253330d1d07b8896fb7f39 (diff) | |
Add Test::Sanitizers.lsan_enabled?
| -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); } |
