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) }