| // Copyright 2021 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_LIB_FIDL_LLCPP_TESTS_DISPATCHER_LSAN_DISABLER_H_ |
| #define SRC_LIB_FIDL_LLCPP_TESTS_DISPATCHER_LSAN_DISABLER_H_ |
| |
| #include <thread> |
| |
| #include <sanitizer/lsan_interface.h> |
| #include <zxtest/zxtest.h> |
| |
| namespace fidl_testing { |
| |
| // Run a test with LSAN disabled. |
| template <typename Callable> |
| void RunWithLsanDisabled(Callable&& callable) { |
| #if __has_feature(address_sanitizer) || __has_feature(leak_sanitizer) || \ |
| __has_feature(hwaddress_sanitizer) |
| // Disable LSAN for this thread while in scope. It is expected to leak by way |
| // of a crash. |
| __lsan::ScopedDisabler _; |
| #endif |
| callable(); |
| } |
| |
| } // namespace fidl_testing |
| |
| #endif // SRC_LIB_FIDL_LLCPP_TESTS_DISPATCHER_LSAN_DISABLER_H_ |