diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2022-12-09 12:51:00 -0500 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2022-12-09 12:51:00 -0500 |
commit | e477e12ade9544c31779f007faee169aae22e145 (patch) | |
tree | 5c120f93435a5e0c5c09fd2b9f2cdadbe5cff2c3 /src | |
parent | ee5d250d27bb1def69077a784bfeb2b444735448 (diff) |
config: New BFS_UNINIT() macro for intentionally uninitialized variables
Diffstat (limited to 'src')
-rw-r--r-- | src/config.h | 9 | ||||
-rw-r--r-- | src/parse.c | 6 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/config.h b/src/config.h index 229f593..810f913 100644 --- a/src/config.h +++ b/src/config.h @@ -213,4 +213,13 @@ # define BFS_UNSUPPRESS() #endif +/** + * Initialize a variable, unless sanitizers would detect uninitialized uses. + */ +#if __has_feature(memory_sanitizer) +# define BFS_UNINIT(var, value) var = var +#else +# define BFS_UNINIT(var, value) var = value +#endif + #endif // BFS_CONFIG_H diff --git a/src/parse.c b/src/parse.c index 320e165..90e7e3b 100644 --- a/src/parse.c +++ b/src/parse.c @@ -2121,9 +2121,9 @@ static int parse_mode(const struct parser_state *state, const char *mode, struct MODE_EQUALS, } op; - mode_t who; - mode_t file_change; - mode_t dir_change; + mode_t BFS_UNINIT(who, 0); + mode_t BFS_UNINIT(file_change, 0); + mode_t BFS_UNINIT(dir_change, 0); const char *i = mode; while (true) { |