From ab629e28f334071784b6009a046b3be441f39349 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 17 Feb 2009 11:53:57 -0500 Subject: BUG: Do not use 'char' type as array subscript This converts uses of 'char' as an array subscript to 'unsigned char' to heed the warning from gcc. The subscript must be an unsigned type to avoid indexing before the beginning of the array. This change avoids a potential crash if input text contains a byte value beyond 0x7f. --- Source/cmDependsFortranParser.cxx | 4 ++-- Source/cmDependsFortranParser.y | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/cmDependsFortranParser.cxx b/Source/cmDependsFortranParser.cxx index 5bc222e..6bc90d6 100644 --- a/Source/cmDependsFortranParser.cxx +++ b/Source/cmDependsFortranParser.cxx @@ -242,8 +242,8 @@ static char charmap[] = { inline int strcasecmpCM(const char *s1, const char *s2) { const char *cm = charmap; - const char* us1 = s1; - const char* us2 = s2; + unsigned char const* us1 = reinterpret_cast(s1); + unsigned char const* us2 = reinterpret_cast(s2); while(cm[*us1] == cm[*us2++]) if(*us1++ == '\0') diff --git a/Source/cmDependsFortranParser.y b/Source/cmDependsFortranParser.y index 7a8d3d9..9aa9445 100644 --- a/Source/cmDependsFortranParser.y +++ b/Source/cmDependsFortranParser.y @@ -101,8 +101,8 @@ static char charmap[] = { inline int strcasecmpCM(const char *s1, const char *s2) { const char *cm = charmap; - const char* us1 = s1; - const char* us2 = s2; + unsigned char const* us1 = reinterpret_cast(s1); + unsigned char const* us2 = reinterpret_cast(s2); while(cm[*us1] == cm[*us2++]) if(*us1++ == '\0') -- cgit v0.12