From 70f8849f0528ff910e2d1762842c0775d027b431 Mon Sep 17 00:00:00 2001 From: Jeong YunWon Date: Fri, 15 Oct 2021 06:52:36 +0900 Subject: [PATCH] as_buffer uses ptr --- vm/src/protocol/buffer.rs | 2 +- vm/src/types/slot.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/vm/src/protocol/buffer.rs b/vm/src/protocol/buffer.rs index 48985330a2..4af99b032d 100644 --- a/vm/src/protocol/buffer.rs +++ b/vm/src/protocol/buffer.rs @@ -108,7 +108,7 @@ impl TryFromBorrowedObject for PyBuffer { let obj_cls = obj.class(); for cls in obj_cls.iter_mro() { if let Some(f) = cls.slots.as_buffer.as_ref() { - return f(obj, vm); + return obj.with_ptr(|obj| f(obj, vm)); } } Err(vm.new_type_error(format!( diff --git a/vm/src/types/slot.rs b/vm/src/types/slot.rs index f638615060..18bfb3ffe3 100644 --- a/vm/src/types/slot.rs +++ b/vm/src/types/slot.rs @@ -134,7 +134,7 @@ pub(crate) type HashFunc = fn(PyObjectPtr, &VirtualMachine) -> PyResult; pub(crate) type GetattroFunc = fn(PyObjectRef, PyStrRef, &VirtualMachine) -> PyResult; pub(crate) type SetattroFunc = fn(&PyObjectRef, PyStrRef, Option, &VirtualMachine) -> PyResult<()>; -pub(crate) type AsBufferFunc = fn(&PyObjectRef, &VirtualMachine) -> PyResult; +pub(crate) type AsBufferFunc = fn(PyObjectPtr, &VirtualMachine) -> PyResult; pub(crate) type RichCompareFunc = fn( PyObjectPtr, PyObjectPtr, @@ -754,7 +754,7 @@ pub trait AsBuffer: PyValue { // TODO: `flags` parameter #[inline] #[pyslot] - fn slot_as_buffer(zelf: &PyObjectRef, vm: &VirtualMachine) -> PyResult { + fn slot_as_buffer(zelf: PyObjectPtr, vm: &VirtualMachine) -> PyResult { let zelf = zelf .downcast_ref() .ok_or_else(|| vm.new_type_error("unexpected payload for as_buffer".to_owned()))?;