mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-07 08:08:50 +00:00
Clean-up fallback io.read_at and io.write_at behaviour
This commit is contained in:
+13
-9
@@ -218,17 +218,17 @@ read_at :: proc(r: Reader_At, p: []byte, offset: i64) -> (n: int, err: Error) {
|
|||||||
return 0, .Empty;
|
return 0, .Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
current_offset: i64;
|
curr_offset: i64;
|
||||||
current_offset, err = r->impl_seek(offset, .Current);
|
curr_offset, err = r->impl_seek(offset, .Current);
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err;
|
return 0, err;
|
||||||
}
|
}
|
||||||
|
|
||||||
n, err = r->impl_read(p);
|
n, err = r->impl_read(p);
|
||||||
if err != nil {
|
_, err1 := r->impl_seek(curr_offset, .Start);
|
||||||
return;
|
if err1 != nil && err == nil {
|
||||||
|
err = err1;
|
||||||
}
|
}
|
||||||
_, err = r->impl_seek(current_offset, .Start);
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -244,14 +244,18 @@ write_at :: proc(w: Writer_At, p: []byte, offset: i64) -> (n: int, err: Error) {
|
|||||||
return 0, .Empty;
|
return 0, .Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
current_offset: i64;
|
curr_offset: i64;
|
||||||
current_offset, err = w->impl_seek(offset, .Current);
|
curr_offset, err = w->impl_seek(offset, .Current);
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err;
|
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) {
|
write_to :: proc(r: Writer_To, w: Writer) -> (n: i64, err: Error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user