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

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/

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