aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/PercentEncodedCharacterDecoder.cpp16
-rw-r--r--src/Uri.cpp3
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')
};
/**