md4c

C Markdown parser. Fast. SAX-like interface. Compliant to CommonMark specification.
git clone https://noulin.net/git/md4c.git
Log | Files | Refs | README | LICENSE

commit bb66cf835acd12a445e82ce84d592181b93e6748
parent d6f40880583e7300fe131816e60b9d540e5f383d
Author: Martin Mitas <mity@morous.org>
Date:   Thu, 13 Oct 2016 18:28:13 +0200

Fix character classification checks to deal with signed as well usnigned char.

Diffstat:
Mmd4c/md4c.c | 18+++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/md4c/md4c.c b/md4c/md4c.c @@ -202,17 +202,17 @@ md_log(MD_CTX* ctx, const char* fmt, ...) /* Character classification. * Note we assume ASCII compatibility of code points < 128 here. */ -#define ISASCII_(ch) ((ch) <= 127) -#define ISBLANK_(ch) ((ch) == _T(' ') || (ch) == _T('\t')) -#define ISNEWLINE_(ch) ((ch) == _T('\r') || (ch) == _T('\n')) +#define ISASCII_(ch) ((unsigned)(ch) <= 127) +#define ISBLANK_(ch) ((unsigned)(ch) == _T(' ') || (unsigned)(ch) == _T('\t')) +#define ISNEWLINE_(ch) ((unsigned)(ch) == _T('\r') || (unsigned)(ch) == _T('\n')) #define ISWHITESPACE_(ch) (ISBLANK_(ch) || ch == _T('\v') || ch == _T('\f')) -#define ISCNTRL_(ch) ((ch) <= 31 || (ch) == 127) -#define ISPUNCT_(ch) ((33 <= (ch) && (ch) <= 47) || (58 <= (ch) && (ch) <= 64) || (91 <= (ch) && (ch) <= 96) || (123 <= (ch) && (ch) <= 126)) -#define ISUPPER_(ch) (_T('A') <= (ch) && (ch) <= _T('Z')) -#define ISLOWER_(ch) (_T('a') <= (ch) && (ch) <= _T('z')) +#define ISCNTRL_(ch) ((unsigned)(ch) <= 31 || (unsigned)(ch) == 127) +#define ISPUNCT_(ch) ((33 <= (unsigned)(ch) && (unsigned)(ch) <= 47) || (58 <= (unsigned)(ch) && (unsigned)(ch) <= 64) || (91 <= (unsigned)(ch) && (unsigned)(ch) <= 96) || (123 <= (unsigned)(ch) && (unsigned)(ch) <= 126)) +#define ISUPPER_(ch) (_T('A') <= (unsigned)(ch) && (unsigned)(ch) <= _T('Z')) +#define ISLOWER_(ch) (_T('a') <= (unsigned)(ch) && (unsigned)(ch) <= _T('z')) #define ISALPHA_(ch) (ISUPPER_(ch) || ISLOWER_(ch)) -#define ISDIGIT_(ch) (_T('0') <= (ch) && (ch) <= _T('9')) -#define ISXDIGIT_(ch) (ISDIGIT_(ch) || (_T('a') <= (ch) && (ch) <= _T('f')) || (_T('A') <= (ch) && (ch) <= _T('F'))) +#define ISDIGIT_(ch) (_T('0') <= (unsigned)(ch) && (unsigned)(ch) <= _T('9')) +#define ISXDIGIT_(ch) (ISDIGIT_(ch) || (_T('a') <= (unsigned)(ch) && (unsigned)(ch) <= _T('f')) || (_T('A') <= (unsigned)(ch) && (unsigned)(ch) <= _T('F'))) #define ISALNUM_(ch) (ISALPHA_(ch) || ISDIGIT_(ch)) #define ISANYOF_(ch, palette) (md_strchr((palette), (ch)) != NULL)