From bf9c1d981889b23b97d45dcaf46cc9557cff93d4 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 30 Nov 2013 12:22:20 +0000 Subject: dir.c: check unknown keywords * dir.c (dir_initialize): check unknown keywords. [ruby-dev:47152] [Bug #8060] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- dir.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'dir.c') diff --git a/dir.c b/dir.c index e3a74c18b0..99b1caa851 100644 --- a/dir.c +++ b/dir.c @@ -424,17 +424,20 @@ dir_initialize(int argc, VALUE *argv, VALUE dir) struct dir_data *dp; rb_encoding *fsenc; VALUE dirname, opt, orig; - static VALUE sym_enc; + static ID keyword_ids[1]; - if (!sym_enc) { - sym_enc = ID2SYM(rb_intern("encoding")); + if (!keyword_ids[0]) { + keyword_ids[0] = rb_intern("encoding"); } + fsenc = rb_filesystem_encoding(); rb_scan_args(argc, argv, "1:", &dirname, &opt); if (!NIL_P(opt)) { - VALUE enc = rb_hash_aref(opt, sym_enc); + VALUE enc; + rb_check_keyword_opthash(opt, keyword_ids, 0, 1); + enc = rb_hash_aref(opt, ID2SYM(keyword_ids[0])); if (!NIL_P(enc)) { fsenc = rb_to_encoding(enc); } -- cgit v1.2.3