ruby-changes:6623
From: akr <ko1@a...>
Date: Mon, 21 Jul 2008 04:58:09 +0900 (JST)
Subject: [ruby-changes:6623] Ruby:r18139 (trunk): * dir.c (dir_initialize): use rb_convert_type instead of
akr 2008-07-21 04:57:56 +0900 (Mon, 21 Jul 2008) New Revision: 18139 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18139 Log: * dir.c (dir_initialize): use rb_convert_type instead of rb_check_convert_type to prevent SEGV by Dir.new(".", true). (dir_initialize): use FilePathValue before rb_enc_get(dirname) to prevent SEGV by Dir.new(0). Modified files: trunk/ChangeLog trunk/dir.c Index: ChangeLog =================================================================== --- ChangeLog (revision 18138) +++ ChangeLog (revision 18139) @@ -1,3 +1,10 @@ +Mon Jul 21 04:55:20 2008 Tanaka Akira <akr@f...> + + * dir.c (dir_initialize): use rb_convert_type instead of + rb_check_convert_type to prevent SEGV by Dir.new(".", true). + (dir_initialize): use FilePathValue before rb_enc_get(dirname) to + prevent SEGV by Dir.new(0). + Mon Jul 21 04:42:15 2008 Tanaka Akira <akr@f...> * re.c (rb_reg_s_union): useless rb_enc_get call removed to prevent Index: dir.c =================================================================== --- dir.c (revision 18138) +++ dir.c (revision 18139) @@ -348,7 +348,7 @@ if (!NIL_P(opt)) { VALUE v, extenc=Qnil, intenc=Qnil; - opt = rb_check_convert_type(opt, T_HASH, "Hash", "to_hash"); + opt = rb_convert_type(opt, T_HASH, "Hash", "to_hash"); v = rb_hash_aref(opt, sym_intenc); if (!NIL_P(v)) intenc = v; @@ -372,6 +372,7 @@ } } + FilePathValue(dirname); { rb_encoding *dirname_encoding = rb_enc_get(dirname); if (rb_usascii_encoding() != dirname_encoding @@ -384,7 +385,6 @@ dirname = rb_str_transcode(dirname, rb_enc_from_encoding(extencoding)); } } - FilePathValue(dirname); Data_Get_Struct(dir, struct dir_data, dp); if (dp->dir) closedir(dp->dir); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/