Skip to content

Commit

Permalink
isxdigit: cast input to unsigned char
Browse files Browse the repository at this point in the history
Otherwise, callers must do so or risk triggering warnings
-Wchar-subscript (and rightfully so; a signed char might
cause us to use a bogus negative index into the
hexval_table).

While we are dropping the now-unnecessary casts from the
caller in urlmatch.c, we can get rid of similar casts in
actually parsing the hex by using the hexval() helper, which
implicitly casts to unsigned (but note that we cannot
implement isxdigit in terms of hexval(), as it also casts
its return value to unsigned).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Oct 16, 2014
1 parent fe1b226 commit 50a7177
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
2 changes: 1 addition & 1 deletion git-compat-util.h
Original file line number Diff line number Diff line change
Expand Up @@ -677,7 +677,7 @@ extern const unsigned char sane_ctype[256];
#define iscntrl(x) (sane_istest(x,GIT_CNTRL))
#define ispunct(x) sane_istest(x, GIT_PUNCT | GIT_REGEX_SPECIAL | \
GIT_GLOB_SPECIAL | GIT_PATHSPEC_MAGIC)
#define isxdigit(x) (hexval_table[x] != -1)
#define isxdigit(x) (hexval_table[(unsigned char)(x)] != -1)
#define tolower(x) sane_case((unsigned char)(x), 0x20)
#define toupper(x) sane_case((unsigned char)(x), 0)
#define is_pathspec_magic(x) sane_istest(x,GIT_PATHSPEC_MAGIC)
Expand Down
8 changes: 4 additions & 4 deletions urlmatch.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@ static int append_normalized_escapes(struct strbuf *buf,
from_len--;
if (ch == '%') {
if (from_len < 2 ||
!isxdigit((unsigned char)from[0]) ||
!isxdigit((unsigned char)from[1]))
!isxdigit(from[0]) ||
!isxdigit(from[1]))
return 0;
ch = hexval_table[(unsigned char)*from++] << 4;
ch |= hexval_table[(unsigned char)*from++];
ch = hexval(*from++) << 4;
ch |= hexval(*from++);
from_len -= 2;
was_esc = 1;
}
Expand Down

0 comments on commit 50a7177

Please sign in to comment.