X-Git-Url: http://nitlanguage.org diff --git a/lib/standard/ropes.nit b/lib/standard/ropes.nit index 12ad67e..9ef2f4d 100644 --- a/lib/standard/ropes.nit +++ b/lib/standard/ropes.nit @@ -240,6 +240,7 @@ class RopeBuffer str = "" length = 0 rpos = 0 + dumped = 0 end redef fun substring(from, count) do @@ -277,15 +278,7 @@ class RopeBuffer var slen = s.length length += slen var rp = rpos - if s isa Rope then - if rp > 0 and dumped != rp then - str += new FlatString.with_infos(ns, rp - dumped, dumped, rp - 1) - dumped = rp - end - str = str + s - return - end - if slen > maxlen then + if s isa Rope or slen > maxlen then if rp > 0 and dumped != rp then str += new FlatString.with_infos(ns, rp - dumped, dumped, rp - 1) dumped = rp @@ -325,12 +318,11 @@ class RopeBuffer return end if slen <= remsp then - sits.copy_to(ns, slen, begin, rp) - if rp == buf_size then - rpos = buf_size + if remsp <= 0 then dump_buffer rpos = 0 else + sits.copy_to(ns, slen, begin, rp) rpos += slen end else