Blender V5.0
BLI_asan.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11/* Clang defines this. */
12#ifndef __has_feature
13# define __has_feature(x) 0
14#endif
15
16#if (defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer)) && \
17 (!defined(_MSC_VER) || _MSC_VER > 1929) /* MSVC 2019 and below doesn't ship ASAN headers. */
18# include "sanitizer/asan_interface.h"
19# define WITH_ASAN
20#else
21/* Ensure return value is used. Just using UNUSED_VARS results in a warning. */
22# define ASAN_POISON_MEMORY_REGION(addr, size) (void)(0 && ((size) != 0 && (addr) != NULL))
23# define ASAN_UNPOISON_MEMORY_REGION(addr, size) (void)(0 && ((size) != 0 && (addr) != NULL))
24#endif
25
31#define BLI_asan_poison(addr, size) ASAN_POISON_MEMORY_REGION(addr, size)
32
36#define BLI_asan_unpoison(addr, size) ASAN_UNPOISON_MEMORY_REGION(addr, size)