aboutsummaryrefslogtreecommitdiff
path: root/src/parser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.rs')
-rw-r--r--src/parser.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/parser.rs b/src/parser.rs
index 7c991c4..abb4c5c 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -1,3 +1,4 @@
+use std::ascii::AsciiExt;
use std::char;
use std::collections::BTreeMap;
use std::error::Error;
@@ -385,8 +386,9 @@ impl<'a> Parser<'a> {
Some((pos, c @ 'u')) |
Some((pos, c @ 'U')) => {
let len = if c == 'u' {4} else {8};
- let num = if me.input.is_char_boundary(pos + 1 + len) {
- &me.input[pos + 1 .. pos + 1 + len]
+ let num = &me.input[pos+1..];
+ let num = if num.len() >= len && num.is_ascii() {
+ &num[..len]
} else {
"invalid"
};
@@ -614,7 +616,7 @@ impl<'a> Parser<'a> {
lo: start,
hi: next,
desc: format!("unexpected character: `{}`",
- rest.char_at(0)),
+ rest.chars().next().unwrap()),
});
None
}