From ef5d106e7eb12a45e50d122a2ce31782652b4ad9 Mon Sep 17 00:00:00 2001 From: normal Date: Tue, 26 Jan 2016 05:33:28 +0000 Subject: 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 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53657 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ signal.c | 2 +- test/ruby/test_signal.rb | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 71aed6e955..60b51def02 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Jan 26 14:26:46 2016 Eric Wong + + * 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 * signal.c (rb_f_kill): should immediately deliver reserved diff --git a/signal.c b/signal.c index cac90db69c..492e682660 100644 --- a/signal.c +++ b/signal.c @@ -1347,7 +1347,7 @@ sig_list(void) 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; } diff --git a/test/ruby/test_signal.rb b/test/ruby/test_signal.rb index 13d52013b0..c48a4ad400 100644 --- a/test/ruby/test_signal.rb +++ b/test/ruby/test_signal.rb @@ -301,4 +301,10 @@ EOS 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 -- cgit v1.2.3