From d21a78a4ac23a104c203b35d6b6a3b42e93cb513 Mon Sep 17 00:00:00 2001 From: Lars Kanis Date: Tue, 10 Dec 2024 10:18:01 +0100 Subject: [PATCH] Implement Fiddle::Pointer.read and .write on the FFI backend --- lib/fiddle/ffi_backend.rb | 8 ++++++++ test/fiddle/test_pointer.rb | 4 ---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/fiddle/ffi_backend.rb b/lib/fiddle/ffi_backend.rb index eac469af..0f068a75 100644 --- a/lib/fiddle/ffi_backend.rb +++ b/lib/fiddle/ffi_backend.rb @@ -261,6 +261,14 @@ def self.to_ptr(value) end end + def self.write(addr, bytes) + FFI::Pointer.new(addr).write_bytes(bytes) + end + + def self.read(addr, len) + FFI::Pointer.new(addr).read_bytes(len) + end + class << self alias [] to_ptr end diff --git a/test/fiddle/test_pointer.rb b/test/fiddle/test_pointer.rb index d46fb662..673e7ca4 100644 --- a/test/fiddle/test_pointer.rb +++ b/test/fiddle/test_pointer.rb @@ -11,10 +11,6 @@ def dlwrap arg end def test_can_read_write_memory - if ffi_backend? - omit("Fiddle::Pointer.{read,write} don't exist in FFI backend") - end - # Allocate some memory Fiddle::Pointer.malloc(Fiddle::SIZEOF_VOIDP, Fiddle::RUBY_FREE) do |pointer| address = pointer.to_i