diff options
| author | Eric Holk <eric.holk@gmail.com> | 2012-06-07 11:35:58 -0700 |
|---|---|---|
| committer | Eric Holk <eric.holk@gmail.com> | 2012-06-15 22:01:07 -0400 |
| commit | 21d56f2c68bf54e52611db486f900e93d1d2a349 (patch) | |
| tree | 1af31bc2abcd72148d6853b00356bd8b5867d4a2 /src/libcore | |
| parent | 015527b0cee0bc5cfaac8dd610035a0c1b2f8ea6 (diff) | |
| download | rust-21d56f2c68bf54e52611db486f900e93d1d2a349.tar.gz rust-21d56f2c68bf54e52611db486f900e93d1d2a349.zip | |
Fixed a bug in extfmt where it couldn't parse unicode in format strings.
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/extfmt.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/libcore/extfmt.rs b/src/libcore/extfmt.rs index 30a3bc1ef69..c24a0291177 100644 --- a/src/libcore/extfmt.rs +++ b/src/libcore/extfmt.rs @@ -94,7 +94,8 @@ mod ct { } let mut i = 0u; while i < lim { - let curr = str::slice(s, i, i+1u); + let size = str::utf8_char_width(s[i]); + let curr = str::slice(s, i, i+size); if str::eq(curr, "%") { i += 1u; if i >= lim { @@ -110,7 +111,7 @@ mod ct { pieces += [rs.piece]; i = rs.next; } - } else { buf += curr; i += 1u; } + } else { buf += curr; i += size; } } flush_buf(buf, pieces); ret pieces; |
