diff --git a/Bigfoot/Libs/Utils/Include/Utils/TargetMacros.h b/Bigfoot/Libs/Utils/Include/Utils/TargetMacros.h index 95b4073..114610d 100644 --- a/Bigfoot/Libs/Utils/Include/Utils/TargetMacros.h +++ b/Bigfoot/Libs/Utils/Include/Utils/TargetMacros.h @@ -44,4 +44,20 @@ #define BIGFOOT_GAME_ONLY(...) __VA_ARGS__ #define BIGFOOT_GAME_OR_TOOLMODE(p_game, p_toolmode) p_game #endif + +#if defined(__has_feature) +#if __has_feature(address_sanitizer) +#include +#define BIGFOOT_LSAN 1 +#endif +#endif +#ifndef BIGFOOT_LSAN +#define BIGFOOT_LSAN 0 +#endif + +#if BIGFOOT_LSAN +#define BIGFOOT_LSAN_ONLY(...) __VA_ARGS__ +#else +#define BIGFOOT_LSAN_ONLY(...) +#endif #endif diff --git a/Bigfoot/Tests/Utils/TargetMacros.cpp b/Bigfoot/Tests/Utils/TargetMacros.cpp index 31975ed..30119f1 100644 --- a/Bigfoot/Tests/Utils/TargetMacros.cpp +++ b/Bigfoot/Tests/Utils/TargetMacros.cpp @@ -32,4 +32,13 @@ TEST_F(TargetMacrosFixture, GameOrToolmode) BIGFOOT_TOOLMODE_ONLY(EXPECT_EQ(value, 2);) } +/****************************************************************************************/ + +TEST_F(TargetMacrosFixture, Lsan) +{ + bool called = false; + BIGFOOT_LSAN_ONLY(called = true;) + EXPECT_EQ(called, static_cast(BIGFOOT_LSAN)); +} + } // namespace Bigfoot