From 8fe782253b9df566e5768c2476709577fdf0ea86 Mon Sep 17 00:00:00 2001 From: gutmet Date: Mon, 27 Apr 2020 00:18:47 +0200 Subject: [PATCH] apparently seek also can fail --- laymanshex.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/laymanshex.go b/laymanshex.go index 8bc77d4..c5d4db1 100644 --- a/laymanshex.go +++ b/laymanshex.go @@ -310,7 +310,7 @@ func setValues(descr fileDescription, binpath string, vals map[string]string) { f, err := os.OpenFile(binpath, os.O_RDWR, 0666) optPanic("failed to write-open binary", err) defer f.Close() - for _, part := range descr.parts { + for i, part := range descr.parts { needSeek := true if part.name != "" { if val, ok := vals[part.name]; ok { @@ -319,7 +319,8 @@ func setValues(descr fileDescription, binpath string, vals map[string]string) { } } if needSeek { - f.Seek(part.handling.bytes, 1) + _, err = f.Seek(part.handling.bytes, 1) + optPanic("set: could not advance in file (stuck at part "+strconv.Itoa(i)+"name: "+part.name+")", err) } } } @@ -329,9 +330,10 @@ func getValues(descr fileDescription, binpath string) map[string]string { f, err := os.Open(binpath) defer f.Close() optPanic("failed to open binary", err) - for _, part := range descr.parts { + for i, part := range descr.parts { if part.name == "" { - f.Seek(part.handling.bytes, 1) + _, err = f.Seek(part.handling.bytes, 1) + optPanic("get: could not advance in file (stuck at part "+strconv.Itoa(i)+"name: "+part.name+")", err) } else { vals[part.name] = part.handling.readFrom(f, descr.byteOrder) }