blob: e3c7a7cd2bfb387bb4357620a468de73544eab2b [file] [log] [blame]
Patrick Williams03907ee2022-05-01 06:28:52 -05001From e8ec0a0f3a353a8167687a8fdb26773e45927aac Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sun, 24 Apr 2022 09:49:12 -0700
4Subject: [PATCH] Use explicit typecast to enum rrdset_flags
5
6specifications say
7An enumerator can be promoted to an integer value. However,
8converting an integer to an enumerator requires an explicit
9cast, and the results are not defined.
10
11Therefore The bitwise OR operation you are performing results
12in an int, which you then attempt to assign to a variable of
13type rrdset_flags without a cast.
14
15Fixes
16| ml/Host.cc:167:9: error: assigning to 'RRDSET_FLAGS' (aka 'rrdset_flags') from incompatible type 'int'
17| rrdset_flag_set(RS, RRDSET_FLAG_ANOMALY_DETECTION);
18| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19
20Upstream-Status: Submitted [https://github.com/netdata/netdata/pull/12750]
21
22Signed-off-by: Khem Raj <raj.khem@gmail.com>
23---
24 database/rrd.h | 4 ++--
25 1 file changed, 2 insertions(+), 2 deletions(-)
26
27--- a/database/rrd.h
28+++ b/database/rrd.h
29@@ -489,8 +489,8 @@ typedef enum rrdset_flags {
30 #define rrdset_flag_clear(st, flag) __atomic_and_fetch(&((st)->flags), ~flag, __ATOMIC_SEQ_CST)
31 #else
32 #define rrdset_flag_check(st, flag) ((st)->flags & (flag))
33-#define rrdset_flag_set(st, flag) (st)->flags |= (flag)
34-#define rrdset_flag_clear(st, flag) (st)->flags &= ~(flag)
35+#define rrdset_flag_set(st, flag) (st)->flags = (RRDSET_FLAGS)((st)->flags | flag)
36+#define rrdset_flag_clear(st, flag) (st)->flags = (RRDSET_FLAGS)((st)->flags & ~(flag))
37 #endif
38 #define rrdset_flag_check_noatomic(st, flag) ((st)->flags & (flag))
39