diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-01-26 05:33:28 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-01-26 05:33:28 +0000 |
commit | ef5d106e7eb12a45e50d122a2ce31782652b4ad9 (patch) | |
tree | 1de2fe805226a52bd752a09e18bd8139912e7787 | |
parent | d0a39748bf9441c389f33ee268df27817ccfaa6f (diff) | |
download | ruby-ef5d106e7eb12a45e50d122a2ce31782652b4ad9.tar.gz |
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
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | signal.c | 2 | ||||
-rw-r--r-- | test/ruby/test_signal.rb | 6 |
3 files changed, 12 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Tue Jan 26 14:26:46 2016 Eric Wong <e@80x24.org> + + * 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@ruby-lang.org> * signal.c (rb_f_kill): should immediately deliver reserved @@ -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 |