Clean-up fallback io.read_at and io.write_at behaviour

This commit is contained in:
gingerBill
2021-04-14 21:25:46 +01:00
parent e19958152a
commit 8827818b1d

View File

@@ -218,17 +218,17 @@ read_at :: proc(r: Reader_At, p: []byte, offset: i64) -> (n: int, err: Error) {
return 0, .Empty;
}
current_offset: i64;
current_offset, err = r->impl_seek(offset, .Current);
curr_offset: i64;
curr_offset, err = r->impl_seek(offset, .Current);
if err != nil {
return 0, err;
}
n, err = r->impl_read(p);
if err != nil {
return;
_, err1 := r->impl_seek(curr_offset, .Start);
if err1 != nil && err == nil {
err = err1;
}
_, err = r->impl_seek(current_offset, .Start);
return;
}
@@ -244,14 +244,18 @@ write_at :: proc(w: Writer_At, p: []byte, offset: i64) -> (n: int, err: Error) {
return 0, .Empty;
}
current_offset: i64;
current_offset, err = w->impl_seek(offset, .Current);
curr_offset: i64;
curr_offset, err = w->impl_seek(offset, .Current);
if err != nil {
return 0, err;
}
defer w->impl_seek(current_offset, .Start);
return w->impl_write(p);
n, err = w->impl_write(p);
_, err1 := w->impl_seek(curr_offset, .Start);
if err1 != nil && err == nil {
err = err1;
}
return;
}
write_to :: proc(r: Writer_To, w: Writer) -> (n: i64, err: Error) {