Fix transaction.invert()/.apply() using byte counts instead of char counts.

pull/3/head
Blaž Hrastnik 4 years ago
parent 197651eb30
commit 883b77bd24

@ -211,8 +211,9 @@ impl ChangeSet {
pos += n; pos += n;
} }
Insert(s) => { Insert(s) => {
changes.push(Delete(s.len())); let chars = s.chars().count();
len += s.len(); changes.push(Delete(chars));
len += chars;
} }
} }
} }
@ -240,7 +241,7 @@ impl ChangeSet {
} }
Insert(s) => { Insert(s) => {
text.insert(pos, s); text.insert(pos, s);
pos += s.len(); pos += s.chars().count();
} }
} }
} }
@ -497,7 +498,7 @@ mod test {
len: 12, len: 12,
}; };
let doc = Rope::from("123 hello xz"); let doc = Rope::from("世界3 hello xz");
let revert = changes.invert(&doc); let revert = changes.invert(&doc);
let mut doc2 = doc.clone(); let mut doc2 = doc.clone();

Loading…
Cancel
Save