From e6b687b25f41f32a5c7e558d450881855047aa83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96zg=C3=BCr=20Kesim?= Date: Fri, 10 Jan 2025 12:17:06 +0100 Subject: [PATCH] fix recalc of byte offsets --- uncrust.go | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/uncrust.go b/uncrust.go index 85c3f9b..2a98d77 100644 --- a/uncrust.go +++ b/uncrust.go @@ -83,19 +83,24 @@ func main() { // We have to calculate the rune position from the byte position. rcount := 0 - idx := 0 + sidx, eidx := 0, 0 for p := range before { - for i := range edits[idx:] { - if edits[i].Start == p { - edits[i].Start = rcount + for i := range edits[sidx:] { + if edits[sidx+i].Start == p { + edits[sidx+i].Start = rcount + sidx += i + break } - if edits[i].End == p { - edits[i].End = rcount - idx++ + } + for i := range edits[eidx:] { + if edits[i+eidx].End == p { + edits[i+eidx].End = rcount + eidx += i + break } } rcount++ - if idx == len(edits) { + if eidx == len(edits) { break } } @@ -114,7 +119,7 @@ func main() { addr := fmt.Sprintf("#%d,#%d", edit.Start, edit.End) e = win.Addr(addr) if e != nil { - log.Fatalf("error writing to acme/%d/addr: %s\n", wid, e) + log.Fatalf("error writing %q to acme/%d/addr: %s\n", addr, wid, e) } win.Write("data", []byte(edit.New)) }