(
zelf: PyObjectRef,
buf_obj: PyObjectRef,
method: &str,
vm: &VirtualMachine,
)
| 736 | } |
| 737 | |
| 738 | fn _readinto( |
| 739 | zelf: PyObjectRef, |
| 740 | buf_obj: PyObjectRef, |
| 741 | method: &str, |
| 742 | vm: &VirtualMachine, |
| 743 | ) -> PyResult<usize> { |
| 744 | let b = ArgMemoryBuffer::try_from_borrowed_object(vm, &buf_obj)?; |
| 745 | let l = b.len(); |
| 746 | let data = vm.call_method(&zelf, method, (l,))?; |
| 747 | if data.is(&buf_obj) { |
| 748 | return Ok(l); |
| 749 | } |
| 750 | let mut buf = b.borrow_buf_mut(); |
| 751 | let data = ArgBytesLike::try_from_object(vm, data)?; |
| 752 | let data = data.borrow_buf(); |
| 753 | match buf.get_mut(..data.len()) { |
| 754 | Some(slice) => { |
| 755 | slice.copy_from_slice(&data); |
| 756 | Ok(data.len()) |
| 757 | } |
| 758 | None => { |
| 759 | Err(vm.new_value_error("readinto: buffer and read data have different lengths")) |
| 760 | } |
| 761 | } |
| 762 | } |
| 763 | #[pymethod] |
| 764 | fn readinto(zelf: PyObjectRef, b: PyObjectRef, vm: &VirtualMachine) -> PyResult<usize> { |
| 765 | Self::_readinto(zelf, b, "read", vm) |
nothing calls this directly
no test coverage detected