[前][次][番号順一覧][スレッド一覧]

ruby-changes:70790

From: Peter <ko1@a...>
Date: Sat, 8 Jan 2022 20:32:18 +0900 (JST)
Subject: [ruby-changes:70790] 09cfc653b7 (master): [ruby/reline] Fix reline on Solaris

https://git.ruby-lang.org/ruby.git/commit/?id=09cfc653b7

From 09cfc653b77584d557a551df6a5b8ebddbbd11a2 Mon Sep 17 00:00:00 2001
From: Peter Zhu <peter@p...>
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(-)

diff --git a/lib/reline/terminfo.rb b/lib/reline/terminfo.rb
index b053ba82c4c..fd8a312d785 100644
--- a/lib/reline/terminfo.rb
+++ b/lib/reline/terminfo.rb
@@ -92,9 +92,9 @@ module Reline::Terminfo https://github.com/ruby/ruby/blob/trunk/lib/reline/terminfo.rb#L92
   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


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]