Skip to content

Commit 4e8540f

Browse files
killerswanerickt
authored andcommitted
---
yaml --- r: 21509 b: refs/heads/snap-stage3 c: 4fb675b h: refs/heads/master i: 21507: 69115c6 v: v3
1 parent 22a66ed commit 4e8540f

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: e430a699f2c60890d9b86069fd0c68a70ece7120
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 272c5ab0e9573e6e85a1d576a3c95b5213cf5c61
4+
refs/heads/snap-stage3: 4fb675be2f42a828fb5a6570b9aad2c65f4598b9
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/src/libstd/json.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -428,17 +428,25 @@ impl Parser {
428428
while i < 4u {
429429
match self.next_char() {
430430
'0' to '9' => {
431-
n = n * 10u +
432-
(self.ch as uint) - ('0' as uint);
433-
}
434-
_ => return self.error(~"invalid \\u escape")
431+
n = n * 16u + (self.ch as uint)
432+
- ('0' as uint);
433+
},
434+
'a' | 'A' => n = n * 16u + 10u,
435+
'b' | 'B' => n = n * 16u + 11u,
436+
'c' | 'C' => n = n * 16u + 12u,
437+
'd' | 'D' => n = n * 16u + 13u,
438+
'e' | 'E' => n = n * 16u + 14u,
439+
'f' | 'F' => n = n * 16u + 15u,
440+
_ => return self.error(
441+
~"invalid \\u escape (unrecognized hex)")
435442
}
436443
i += 1u;
437444
}
438445

439446
// Error out if we didn't parse 4 digits.
440447
if i != 4u {
441-
return self.error(~"invalid \\u escape");
448+
return self.error(
449+
~"invalid \\u escape (not four digits)");
442450
}
443451

444452
str::push_char(res, n as char);

0 commit comments

Comments
 (0)