From 473fb6385e6072e8e55c8f44debe6dadc0d5621c Mon Sep 17 00:00:00 2001 From: Lars Kanis Date: Wed, 11 Dec 2024 01:57:36 +0100 Subject: [PATCH] [ruby/fiddle] Implement `Fiddle::Pointer.read` and `.write` on the FFI backend (https://github.com/ruby/fiddle/pull/165) https://github.com/ruby/fiddle/commit/0bd963d3b8 --- ext/fiddle/lib/fiddle/ffi_backend.rb | 8 ++++++++ test/fiddle/test_pointer.rb | 4 ---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ext/fiddle/lib/fiddle/ffi_backend.rb b/ext/fiddle/lib/fiddle/ffi_backend.rb index eac469aff6..0f068a75e0 100644 --- a/ext/fiddle/lib/fiddle/ffi_backend.rb +++ b/ext/fiddle/lib/fiddle/ffi_backend.rb @@ -261,6 +261,14 @@ module Fiddle 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 d46fb662ba..673e7ca445 100644 --- a/test/fiddle/test_pointer.rb +++ b/test/fiddle/test_pointer.rb @@ -11,10 +11,6 @@ module Fiddle 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