aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-07-04 18:28:56 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-07-06 03:39:33 +0200
commitc6dff56f6c017cf909ddf03631d513a3fcd15888 (patch)
tree11a91c34830f108aeed66d9fbca2d7cd615d4eb0
parent11db59ea8e96fc4e7163a54c5564cb76a6bacd63 (diff)
downloadsparse-c6dff56f6c017cf909ddf03631d513a3fcd15888.tar.gz
predefine: fix multi-token predefine
The function predefine() and its variants are only valid if they define a single-token value. However, when a type is signed, predefine_min() will produce a multi-token value. Fix this by using add_pre_buffer() instead of predefine(). Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--predefine.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/predefine.c b/predefine.c
index ff457b38..d05b1018 100644
--- a/predefine.c
+++ b/predefine.c
@@ -52,7 +52,7 @@ static void predefined_min(const char *name, struct symbol *type)
snprintf(buf, sizeof(buf), "__%s_MIN__", name);
if (is_signed_type(type))
- predefine(buf, 1, "(-__%s_MAX__ - 1)", name);
+ add_pre_buffer("#weak_define %s (-__%s_MAX__ - 1)\n", buf, name);
else
predefine(buf, 1, "0%s", suffix);
}