From 09cfc653b77584d557a551df6a5b8ebddbbd11a2 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Fri, 7 Jan 2022 22:34:54 -0500 Subject: [ruby/reline] Fix reline on Solaris Solaris requires that the pointer errret_int is alined to an integer, however, with VWA, strings are no longer aligned to an integer, so use a Fiddle::Pointer with a malloc'd region instead. https://github.com/ruby/reline/commit/5fcd89ab0c --- lib/reline/terminfo.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/reline') diff --git a/lib/reline/terminfo.rb b/lib/reline/terminfo.rb index b053ba82c4..fd8a312d78 100644 --- a/lib/reline/terminfo.rb +++ b/lib/reline/terminfo.rb @@ -92,9 +92,9 @@ module Reline::Terminfo end def self.setupterm(term, fildes) - errret_int = String.new("\x00" * 8, encoding: 'ASCII-8BIT') + errret_int = Fiddle::Pointer.malloc(Fiddle::SIZEOF_INT) ret = @setupterm.(term, fildes, errret_int) - errret = errret_int.unpack1('i') + errret = errret_int[0, Fiddle::SIZEOF_INT].unpack1('i') case ret when 0 # OK 0 -- cgit v1.2.1