Skip to content

Commit 8df574a

Browse files
Maumagnaguagnohsbt
authored andcommitted
[ruby/fiddle] Prefer String#unpack1 in Fiddle::ValueUtil
(ruby/fiddle#118) String#unpack1 is available since Ruby 2.4, and support for older than Ruby 2.5 was dropped by #85. Also simplified a common return statement.
1 parent 1dc8c18 commit 8df574a

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

ext/fiddle/lib/fiddle/value.rb

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ module ValueUtil #:nodoc: all
66
def unsigned_value(val, ty)
77
case ty.abs
88
when TYPE_CHAR
9-
[val].pack("c").unpack("C")[0]
9+
[val].pack("c").unpack1("C")
1010
when TYPE_SHORT
11-
[val].pack("s!").unpack("S!")[0]
11+
[val].pack("s!").unpack1("S!")
1212
when TYPE_INT
13-
[val].pack("i!").unpack("I!")[0]
13+
[val].pack("i!").unpack1("I!")
1414
when TYPE_LONG
15-
[val].pack("l!").unpack("L!")[0]
15+
[val].pack("l!").unpack1("L!")
1616
else
1717
if defined?(TYPE_LONG_LONG) and
1818
ty.abs == TYPE_LONG_LONG
19-
[val].pack("q").unpack("Q")[0]
19+
[val].pack("q").unpack1("Q")
2020
else
2121
val
2222
end
@@ -26,17 +26,17 @@ def unsigned_value(val, ty)
2626
def signed_value(val, ty)
2727
case ty.abs
2828
when TYPE_CHAR
29-
[val].pack("C").unpack("c")[0]
29+
[val].pack("C").unpack1("c")
3030
when TYPE_SHORT
31-
[val].pack("S!").unpack("s!")[0]
31+
[val].pack("S!").unpack1("s!")
3232
when TYPE_INT
33-
[val].pack("I!").unpack("i!")[0]
33+
[val].pack("I!").unpack1("i!")
3434
when TYPE_LONG
35-
[val].pack("L!").unpack("l!")[0]
35+
[val].pack("L!").unpack1("l!")
3636
else
3737
if defined?(TYPE_LONG_LONG) and
3838
ty.abs == TYPE_LONG_LONG
39-
[val].pack("Q").unpack("q")[0]
39+
[val].pack("Q").unpack1("q")
4040
else
4141
val
4242
end
@@ -80,11 +80,11 @@ def wrap_arg(arg, ty, funcs = [], &block)
8080
else
8181
case SIZEOF_VOIDP
8282
when SIZEOF_LONG
83-
return [arg].pack("p").unpack("l!")[0]
83+
return [arg].pack("p").unpack1("l!")
8484
else
8585
if defined?(SIZEOF_LONG_LONG) and
8686
SIZEOF_VOIDP == SIZEOF_LONG_LONG
87-
return [arg].pack("p").unpack("q")[0]
87+
return [arg].pack("p").unpack1("q")
8888
else
8989
raise(RuntimeError, "sizeof(void*)?")
9090
end
@@ -102,10 +102,8 @@ def wrap_arg(arg, ty, funcs = [], &block)
102102
return val.unpack('C*')
103103
end
104104
end
105-
return arg
106-
else
107-
return arg
108105
end
106+
return arg
109107
else
110108
if( arg.respond_to?(:to_ptr) )
111109
return arg.to_ptr.to_i

0 commit comments

Comments
 (0)