From 13ea0efa9f142aed57bb4df42b3a1ad09df9ebbe Mon Sep 17 00:00:00 2001 From: Noah <33094578+coolreader18@users.noreply.github.com> Date: Thu, 17 Dec 2020 12:57:05 -0600 Subject: [PATCH] sock.recv_into takes any rw buffer --- vm/src/stdlib/socket.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/vm/src/stdlib/socket.rs b/vm/src/stdlib/socket.rs index e39c4e74e..ca7a6962c 100644 --- a/vm/src/stdlib/socket.rs +++ b/vm/src/stdlib/socket.rs @@ -8,12 +8,11 @@ use std::io::{self, prelude::*}; use std::net::{Ipv4Addr, Ipv6Addr, Shutdown, SocketAddr, ToSocketAddrs}; use std::time::Duration; -use crate::builtins::bytearray::PyByteArrayRef; use crate::builtins::bytes::PyBytesRef; use crate::builtins::pystr::{PyStr, PyStrRef}; use crate::builtins::pytype::PyTypeRef; use crate::builtins::tuple::PyTupleRef; -use crate::byteslike::PyBytesLike; +use crate::byteslike::{PyBytesLike, PyRwBytesLike}; use crate::common::lock::{PyRwLock, PyRwLockReadGuard, PyRwLockWriteGuard}; use crate::exceptions::{IntoPyException, PyBaseExceptionRef}; use crate::function::{FuncArgs, OptionalArg}; @@ -179,10 +178,8 @@ impl PySocket { } #[pymethod] - fn recv_into(&self, buf: PyByteArrayRef, vm: &VirtualMachine) -> PyResult { - let mut buffer = buf.borrow_value_mut(); - self.sock() - .recv(&mut buffer.elements) + fn recv_into(&self, buf: PyRwBytesLike, vm: &VirtualMachine) -> PyResult { + buf.with_ref(|buf| self.sock().recv(buf)) .map_err(|err| convert_sock_error(vm, err)) }