summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorEric Holk <eric.holk@gmail.com>2012-06-07 11:35:58 -0700
committerEric Holk <eric.holk@gmail.com>2012-06-15 22:01:07 -0400
commit21d56f2c68bf54e52611db486f900e93d1d2a349 (patch)
tree1af31bc2abcd72148d6853b00356bd8b5867d4a2 /src/libcore
parent015527b0cee0bc5cfaac8dd610035a0c1b2f8ea6 (diff)
downloadrust-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.rs5
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;