Skip to content

Commit 582f443

Browse files
ankanekou
andauthored
Improve Fiddle::Pointer#inspect for FFI backend (#179)
```ruby p Fiddle::Pointer.new(1) ``` CRuby ```text #<Fiddle::Pointer:0x0000600000983240 ptr=0x0000000000000001 size=0 free=0x0000000000000000> ``` JRuby before ```text #<Fiddle::Pointer ptr=1 size=9223372036854775807 free=nil> ``` JRuby after ```text #<Fiddle::Pointer ptr=0x0000000000000001 size=9223372036854775807 free=0x0000000000000000> ``` Note: `size` is incorrect for JRuby, which is not addressed with this PR --------- Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
1 parent cb7a484 commit 582f443

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

lib/fiddle/ffi_backend.rb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,16 @@ def to_value
433433
end
434434

435435
def inspect
436-
"#<#{self.class.name} ptr=#{to_i.to_s(16)} size=#{@size} free=#{@free.inspect}>"
436+
# SIZEOF_VOIDP * 2 == Math.log(2 ** (SIZEOF_VOIDP * 8), 16)
437+
pointer_inspect_width = SIZEOF_VOIDP * 2
438+
"#<%s ptr=0x%0.*x size=%d free=0x%0.*x>" % [
439+
self.class.name,
440+
pointer_inspect_width,
441+
to_i,
442+
size,
443+
pointer_inspect_width,
444+
@free || 0,
445+
]
437446
end
438447

439448
def +(delta)

test/fiddle/test_pointer.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,6 @@ def test_plus
110110
end
111111

112112
def test_inspect
113-
if ffi_backend?
114-
omit("Fiddle::Pointer#inspect is incompatible with FFI backend")
115-
end
116-
117113
ptr = Pointer.new(0)
118114
inspect = ptr.inspect
119115
assert_match(/size=#{ptr.size}/, inspect)

0 commit comments

Comments
 (0)