From 8bd27c547c3260ce72dc5edbab248bb858c84cf2 Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Thu, 14 May 2020 00:44:35 +0900 Subject: [PATCH] ext/json/parser/prereq.mk: remove type-limit warning if char is unsigned MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ragel generates a code `0 <= (*p)` where `*p` is char. As char is unsigned by default on arm and RISC-V, it is warned by gcc: ``` compiling parser.c parser.c: In function ‘JSON_parse_string’: parser.c:1566:2: warning: comparison is always true due to limited range of data type [-Wtype-limits] if ( 0 <= (*p) && (*p) <= 31 ) ^ parser.c:1596:2: warning: comparison is always true due to limited range of data type [-Wtype-limits] if ( 0 <= (*p) && (*p) <= 31 ) ^ ``` This change removes the warning by substituting the condition with `0 <= (signed char)(*p)`. --- ext/json/parser/parser.c | 4 ++-- ext/json/parser/prereq.mk | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ext/json/parser/parser.c b/ext/json/parser/parser.c index 0f98cf9827..e4a305663c 100644 --- a/ext/json/parser/parser.c +++ b/ext/json/parser/parser.c @@ -1563,7 +1563,7 @@ case 2: case 34: goto tr2; case 92: goto st3; } - if ( 0 <= (*p) && (*p) <= 31 ) + if ( 0 <= (signed char)(*p) && (*p) <= 31 ) goto st0; goto st2; tr2: @@ -1593,7 +1593,7 @@ st3: case 3: if ( (*p) == 117 ) goto st4; - if ( 0 <= (*p) && (*p) <= 31 ) + if ( 0 <= (signed char)(*p) && (*p) <= 31 ) goto st0; goto st2; st4: diff --git a/ext/json/parser/prereq.mk b/ext/json/parser/prereq.mk index 37bacc3380..9111431ab8 100644 --- a/ext/json/parser/prereq.mk +++ b/ext/json/parser/prereq.mk @@ -6,6 +6,7 @@ RAGEL = ragel $(RAGEL) -G2 $< $(BASERUBY) -pli -e '$$_.sub!(/[ \t]+$$/, "")' \ -e '$$_.sub!(/^static const int (JSON_.*=.*);$$/, "enum {\\1};")' \ + -e '$$_.sub!(/0 <= \(\*p\) && \(\*p\) <= 31/, "0 <= (signed char)(*p) && (*p) <= 31")' \ -e '$$_ = "/* This file is automatically generated from parser.rl by using ragel */" + $$_ if $$. == 1' $@ parser.c: