From f6ced24999ffb287bacb8300d0e7c55d89568a79 Mon Sep 17 00:00:00 2001 From: Akihiro Sagawa Date: Thu, 18 May 2017 10:16:14 +0200 Subject: [PATCH] msi: Avoid using isspace()/isdigit() for WCHARs. Found with Coccinelle. Signed-off-by: Akihiro Sagawa Signed-off-by: Hans Leidekker Signed-off-by: Alexandre Julliard --- dlls/msi/tokenize.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/dlls/msi/tokenize.c b/dlls/msi/tokenize.c index 441a54aff3d..1656fd8c3dd 100644 --- a/dlls/msi/tokenize.c +++ b/dlls/msi/tokenize.c @@ -187,6 +187,21 @@ static const char isIdChar[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* Fx */ }; +/* +** WCHAR safe version of isdigit() +*/ +static inline int isDigit(WCHAR c) +{ + return c >= '0' && c <= '9'; +} + +/* +** WCHAR safe version of isspace(), except '\r' +*/ +static inline int isSpace(WCHAR c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\f'; +} /* ** Return the length of the token that begins at z[0]. Return @@ -199,7 +214,7 @@ int sqliteGetToken(const WCHAR *z, int *tokenType, int *skip){ *skip = 0; switch( *z ){ case ' ': case '\t': case '\n': case '\f': - for(i=1; isspace(z[i]) && z[i] != '\r'; i++){} + for(i=1; isSpace(z[i]); i++){} *tokenType = TK_SPACE; return i; case '-': @@ -265,7 +280,7 @@ int sqliteGetToken(const WCHAR *z, int *tokenType, int *skip){ return i; } case '.': - if( !isdigit(z[1]) ){ + if( !isDigit(z[1]) ){ *tokenType = TK_DOT; return 1; } @@ -273,7 +288,7 @@ int sqliteGetToken(const WCHAR *z, int *tokenType, int *skip){ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': *tokenType = TK_INTEGER; - for(i=1; isdigit(z[i]); i++){} + for(i=1; isDigit(z[i]); i++){} return i; case '[': for(i=1; z[i] && z[i-1]!=']'; i++){}