diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/PercentEncodedCharacterDecoder.cpp | 16 | ||||
-rw-r--r-- | src/Uri.cpp | 3 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/PercentEncodedCharacterDecoder.cpp b/src/PercentEncodedCharacterDecoder.cpp index 890d392..dc7cd58 100644 --- a/src/PercentEncodedCharacterDecoder.cpp +++ b/src/PercentEncodedCharacterDecoder.cpp @@ -21,7 +21,13 @@ namespace { * This is the character set containing just the upper-case * letters 'A' through 'F', used in upper-case hexadecimal. */ - const Uri::CharacterSet HEX('A', 'F'); + const Uri::CharacterSet HEX_UPPER('A', 'F'); + + /** + * This is the character set containing just the lower-case + * letters 'a' through 'f', used in lower-case hexadecimal. + */ + const Uri::CharacterSet HEX_LOWER('a', 'f'); } @@ -58,8 +64,10 @@ namespace Uri { impl_->decodedCharacter <<= 4; if (IsCharacterInSet(c, DIGIT)) { impl_->decodedCharacter += (int)(c - '0'); - } else if (IsCharacterInSet(c, HEX)) { + } else if (IsCharacterInSet(c, HEX_UPPER)) { impl_->decodedCharacter += (int)(c - 'A') + 10; + } else if (IsCharacterInSet(c, HEX_LOWER)) { + impl_->decodedCharacter += (int)(c - 'a') + 10; } else { return false; } @@ -70,8 +78,10 @@ namespace Uri { impl_->decodedCharacter <<= 4; if (IsCharacterInSet(c, DIGIT)) { impl_->decodedCharacter += (int)(c - '0'); - } else if (IsCharacterInSet(c, HEX)) { + } else if (IsCharacterInSet(c, HEX_UPPER)) { impl_->decodedCharacter += (int)(c - 'A') + 10; + } else if (IsCharacterInSet(c, HEX_LOWER)) { + impl_->decodedCharacter += (int)(c - 'a') + 10; } else { return false; } diff --git a/src/Uri.cpp b/src/Uri.cpp index 3bb3a59..b30796c 100644 --- a/src/Uri.cpp +++ b/src/Uri.cpp @@ -38,7 +38,8 @@ namespace { */ const Uri::CharacterSet HEXDIG{ Uri::CharacterSet('0', '9'), - Uri::CharacterSet('A', 'F') + Uri::CharacterSet('A', 'F'), + Uri::CharacterSet('a', 'f') }; /** |