diff options
| author | bors <bors@rust-lang.org> | 2013-05-08 21:45:37 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-05-08 21:45:37 -0700 |
| commit | 101d4bf8b2a9d7bf7cd537ae8a9d9a9a12ebc150 (patch) | |
| tree | a9422aee4cb6251083cd1bb40065d8d030df6a12 /src/libstd | |
| parent | 3bbbb314ee61aa00deb3e9756421fd2465fd7a91 (diff) | |
| parent | ad5ee00c93043f08626efae8547587b640cf2630 (diff) | |
| download | rust-101d4bf8b2a9d7bf7cd537ae8a9d9a9a12ebc150.tar.gz rust-101d4bf8b2a9d7bf7cd537ae8a9d9a9a12ebc150.zip | |
auto merge of #6332 : huonw/rust/std-base64-match, r=nikomatsakis
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/base64.rs | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/src/libstd/base64.rs b/src/libstd/base64.rs index b26296c9aca..85ba2707863 100644 --- a/src/libstd/base64.rs +++ b/src/libstd/base64.rs @@ -156,31 +156,27 @@ impl FromBase64 for ~[u8] { let ch = self[i] as char; n <<= 6u; - if ch >= 'A' && ch <= 'Z' { - n |= (ch as uint) - 0x41u; - } else if ch >= 'a' && ch <= 'z' { - n |= (ch as uint) - 0x47u; - } else if ch >= '0' && ch <= '9' { - n |= (ch as uint) + 0x04u; - } else if ch == '+' { - n |= 0x3Eu; - } else if ch == '/' { - n |= 0x3Fu; - } else if ch == '=' { - match len - i { - 1u => { - r.push(((n >> 16u) & 0xFFu) as u8); - r.push(((n >> 8u ) & 0xFFu) as u8); - return copy r; - } - 2u => { - r.push(((n >> 10u) & 0xFFu) as u8); - return copy r; - } - _ => fail!(~"invalid base64 padding") + match ch { + 'A'..'Z' => n |= (ch as uint) - 0x41, + 'a'..'z' => n |= (ch as uint) - 0x47, + '0'..'9' => n |= (ch as uint) + 0x04, + '+' => n |= 0x3E, + '/' => n |= 0x3F, + '=' => { + match len - i { + 1u => { + r.push(((n >> 16u) & 0xFFu) as u8); + r.push(((n >> 8u ) & 0xFFu) as u8); + return copy r; + } + 2u => { + r.push(((n >> 10u) & 0xFFu) as u8); + return copy r; + } + _ => fail!(~"invalid base64 padding") + } } - } else { - fail!(~"invalid base64 character"); + _ => fail!(~"invalid base64 character") } i += 1u; |
