Fix linter errors

"comparison of constant 240 with expression of type 'const char' is
always false"
also a whitespace issue

Changed the inequalities to bitwise comparisons, which hopefully don't
care about the sign.

I was considering just casting `c` to `unsigned char` but I doubt
it would be safe and multiplatform.
1164-fix
MrSimbax 2020-07-06 13:49:57 +02:00 committed by Mateusz Przybył
parent 6c715ffef9
commit 7449111a00
1 changed files with 5 additions and 5 deletions

View File

@ -175,17 +175,17 @@ int StrUtils::Utf8CharSizeAt(const std::string &str, unsigned int pos)
return 0; return 0;
const char c = str[pos]; const char c = str[pos];
if(c >= 0xF0) if((c & 0b11111000) == 0b11110000)
return 4; return 4;
if(c >= 0xE0) if((c & 0b11110000) == 0b11100000)
return 3; return 3;
if(c >= 0xC0) if((c & 0b11100000) == 0b11000000)
return 2; return 2;
// Invalid char - unexpected continuation byte // Invalid char - unexpected continuation byte
if(c >= 0x80) if((c & 0b11000000) == 0b10000000)
throw new std::invalid_argument("Unexpected UTF-8 continuation byte"); throw new std::invalid_argument("Unexpected UTF-8 continuation byte");
return 1; return 1;
} }