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

ruby-changes:41583

From: normal <ko1@a...>
Date: Tue, 26 Jan 2016 14:32:37 +0900 (JST)
Subject: [ruby-changes:41583] normal:r53657 (trunk): Signal.list deduplicates keys

normal	2016-01-26 14:33:28 +0900 (Tue, 26 Jan 2016)

  New Revision: 53657

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=53657

  Log:
    Signal.list deduplicates keys
    
    This allows us to reuse string objects used in symbols as well
    as any string representations of signal names in source code.
    
    * signal.c (sig_list): use fstring for hash key
    * test/ruby/test_signal.rb (test_signal_list_dedupe_keys): added

  Modified files:
    trunk/ChangeLog
    trunk/signal.c
    trunk/test/ruby/test_signal.rb
Index: test/ruby/test_signal.rb
===================================================================
--- test/ruby/test_signal.rb	(revision 53656)
+++ test/ruby/test_signal.rb	(revision 53657)
@@ -301,4 +301,10 @@ EOS https://github.com/ruby/ruby/blob/trunk/test/ruby/test_signal.rb#L301
       assert_ruby_status(['-e', 'Process.kill(:CONT, $$)'])
     end
   end if Process.respond_to?(:kill)
+
+  def test_signal_list_dedupe_keys
+    a = Signal.list.keys.map(&:object_id).sort
+    b = Signal.list.keys.map(&:object_id).sort
+    assert_equal a, b
+  end
 end
Index: signal.c
===================================================================
--- signal.c	(revision 53656)
+++ signal.c	(revision 53657)
@@ -1347,7 +1347,7 @@ sig_list(void) https://github.com/ruby/ruby/blob/trunk/signal.c#L1347
     const struct signals *sigs;
 
     for (sigs = siglist; sigs->signm; sigs++) {
-	rb_hash_aset(h, rb_str_new2(sigs->signm), INT2FIX(sigs->signo));
+	rb_hash_aset(h, rb_fstring_cstr(sigs->signm), INT2FIX(sigs->signo));
     }
     return h;
 }
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 53656)
+++ ChangeLog	(revision 53657)
@@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Tue Jan 26 14:26:46 2016  Eric Wong  <e@8...>
+
+	* signal.c (sig_list): use fstring for hash key
+	* test/ruby/test_signal.rb (test_signal_list_dedupe_keys): added
+
 Tue Jan 26 13:08:34 2016  Nobuyoshi Nakada  <nobu@r...>
 
 	* signal.c (rb_f_kill): should immediately deliver reserved

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

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