| @@ -50,6 +50,7 @@ namespace OggVorbisNamespace | |||||
| "-Wmisleading-indentation", | "-Wmisleading-indentation", | ||||
| "-Wmissing-prototypes", | "-Wmissing-prototypes", | ||||
| "-Wcast-align") | "-Wcast-align") | ||||
| JUCE_BEGIN_NO_SANITIZE ("undefined") | |||||
| #include "oggvorbis/vorbisenc.h" | #include "oggvorbis/vorbisenc.h" | ||||
| #include "oggvorbis/codec.h" | #include "oggvorbis/codec.h" | ||||
| @@ -79,6 +80,7 @@ namespace OggVorbisNamespace | |||||
| #include "oggvorbis/libvorbis-1.3.7/lib/vorbisfile.c" | #include "oggvorbis/libvorbis-1.3.7/lib/vorbisfile.c" | ||||
| #include "oggvorbis/libvorbis-1.3.7/lib/window.c" | #include "oggvorbis/libvorbis-1.3.7/lib/window.c" | ||||
| JUCE_END_NO_SANITIZE | |||||
| JUCE_END_IGNORE_WARNINGS_MSVC | JUCE_END_IGNORE_WARNINGS_MSVC | ||||
| JUCE_END_IGNORE_WARNINGS_GCC_LIKE | JUCE_END_IGNORE_WARNINGS_GCC_LIKE | ||||
| #else | #else | ||||
| @@ -29,6 +29,8 @@ | |||||
| //============================================================================== | //============================================================================== | ||||
| #if JucePlugin_Build_VST3 && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD) | #if JucePlugin_Build_VST3 && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX || JUCE_BSD) | ||||
| JUCE_BEGIN_NO_SANITIZE ("vptr") | |||||
| #if JUCE_PLUGINHOST_VST3 | #if JUCE_PLUGINHOST_VST3 | ||||
| #if JUCE_MAC | #if JUCE_MAC | ||||
| #include <CoreFoundation/CoreFoundation.h> | #include <CoreFoundation/CoreFoundation.h> | ||||
| @@ -3989,4 +3991,6 @@ extern "C" SMTG_EXPORT_SYMBOL IPluginFactory* PLUGIN_API GetPluginFactory() | |||||
| extern "C" BOOL WINAPI DllMain (HINSTANCE instance, DWORD reason, LPVOID) { if (reason == DLL_PROCESS_ATTACH) Process::setCurrentModuleInstanceHandle (instance); return true; } | extern "C" BOOL WINAPI DllMain (HINSTANCE instance, DWORD reason, LPVOID) { if (reason == DLL_PROCESS_ATTACH) Process::setCurrentModuleInstanceHandle (instance); return true; } | ||||
| #endif | #endif | ||||
| JUCE_END_NO_SANITIZE | |||||
| #endif //JucePlugin_Build_VST3 | #endif //JucePlugin_Build_VST3 | ||||
| @@ -28,6 +28,8 @@ | |||||
| namespace juce | namespace juce | ||||
| { | { | ||||
| JUCE_BEGIN_NO_SANITIZE ("vptr") | |||||
| //============================================================================== | //============================================================================== | ||||
| #define JUCE_DECLARE_VST3_COM_REF_METHODS \ | #define JUCE_DECLARE_VST3_COM_REF_METHODS \ | ||||
| Steinberg::uint32 PLUGIN_API addRef() override { return (Steinberg::uint32) ++refCount; } \ | Steinberg::uint32 PLUGIN_API addRef() override { return (Steinberg::uint32) ++refCount; } \ | ||||
| @@ -1219,6 +1221,8 @@ private: | |||||
| std::atomic<int32> flags { 0 }; | std::atomic<int32> flags { 0 }; | ||||
| }; | }; | ||||
| JUCE_END_NO_SANITIZE | |||||
| } // namespace juce | } // namespace juce | ||||
| #endif // ! DOXYGEN | #endif // ! DOXYGEN | ||||
| @@ -31,6 +31,10 @@ | |||||
| namespace juce | namespace juce | ||||
| { | { | ||||
| // UB Sanitizer doesn't necessarily have instrumentation for loaded plugins, so | |||||
| // it won't recognize the dynamic types of pointers to the plugin's interfaces. | |||||
| JUCE_BEGIN_NO_SANITIZE ("vptr") | |||||
| using namespace Steinberg; | using namespace Steinberg; | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -3767,6 +3771,8 @@ FileSearchPath VST3PluginFormat::getDefaultLocationsToSearch() | |||||
| #endif | #endif | ||||
| } | } | ||||
| JUCE_END_NO_SANITIZE | |||||
| } // namespace juce | } // namespace juce | ||||
| #endif // JUCE_PLUGINHOST_VST3 | #endif // JUCE_PLUGINHOST_VST3 | ||||
| @@ -189,7 +189,7 @@ | |||||
| #define JUCE_IGNORE_MSVC(warnings) __pragma(warning(disable:warnings)) | #define JUCE_IGNORE_MSVC(warnings) __pragma(warning(disable:warnings)) | ||||
| #define JUCE_BEGIN_IGNORE_WARNINGS_LEVEL_MSVC(level, warnings) \ | #define JUCE_BEGIN_IGNORE_WARNINGS_LEVEL_MSVC(level, warnings) \ | ||||
| __pragma(warning(push, level)) JUCE_IGNORE_MSVC(warnings) | __pragma(warning(push, level)) JUCE_IGNORE_MSVC(warnings) | ||||
| #define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings) \ | |||||
| #define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings) \ | |||||
| __pragma(warning(push)) JUCE_IGNORE_MSVC(warnings) | __pragma(warning(push)) JUCE_IGNORE_MSVC(warnings) | ||||
| #define JUCE_END_IGNORE_WARNINGS_MSVC __pragma(warning(pop)) | #define JUCE_END_IGNORE_WARNINGS_MSVC __pragma(warning(pop)) | ||||
| #else | #else | ||||
| @@ -198,3 +198,24 @@ | |||||
| #define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings) | #define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings) | ||||
| #define JUCE_END_IGNORE_WARNINGS_MSVC | #define JUCE_END_IGNORE_WARNINGS_MSVC | ||||
| #endif | #endif | ||||
| #if JUCE_MAC || JUCE_IOS | |||||
| #define JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION 10 | |||||
| #else | |||||
| #define JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION 5 | |||||
| #endif | |||||
| /** Disable sanitizers for a range of functions. | |||||
| This functionality doesn't seem to exist on GCC yet, so at the moment this only works for clang. | |||||
| */ | |||||
| #if JUCE_CLANG && __clang_major__ >= JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION | |||||
| #define JUCE_BEGIN_NO_SANITIZE(warnings) \ | |||||
| _Pragma(JUCE_TO_STRING(clang attribute push(__attribute__((no_sanitize(warnings))), apply_to=function))) | |||||
| #define JUCE_END_NO_SANITIZE _Pragma(JUCE_TO_STRING(clang attribute pop)) | |||||
| #else | |||||
| #define JUCE_BEGIN_NO_SANITIZE(warnings) | |||||
| #define JUCE_END_NO_SANITIZE | |||||
| #endif | |||||
| #undef JUCE_SANITIZER_ATTRIBUTE_MINIMUM_CLANG_VERSION | |||||