From 1596839256eb3cd0bad3c324a1baa9733c950002 Mon Sep 17 00:00:00 2001 From: Ronan Collobert Date: Wed, 7 Jan 2026 10:08:22 -0800 Subject: [PATCH] fix array allocator with user buffer and deleter (#2971) --- mlx/array.cpp | 2 +- tests/array_tests.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/mlx/array.cpp b/mlx/array.cpp index 7c8e8191..500b6cc9 100644 --- a/mlx/array.cpp +++ b/mlx/array.cpp @@ -96,7 +96,7 @@ array::array( deleter(data); } else { auto wrapped_deleter = [deleter](allocator::Buffer buffer) { - auto ptr = buffer.ptr(); + auto ptr = buffer.raw_ptr(); allocator::release(buffer); return deleter(ptr); }; diff --git a/tests/array_tests.cpp b/tests/array_tests.cpp index b624dff7..55af2df1 100644 --- a/tests/array_tests.cpp +++ b/tests/array_tests.cpp @@ -613,7 +613,12 @@ TEST_CASE("test make array from user buffer") { std::vector buffer(size, 0); int count = 0; - auto deleter = [&count](void*) { count++; }; + auto deleter = [&count, data = buffer.data()](void* ptr) { + // make sure pointer is correct + if (ptr == data) { + count++; + } + }; { auto a = array(buffer.data(), Shape{size}, int32, deleter);