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

ruby-changes:1859

From: ko1@a...
Date: 6 Sep 2007 22:59:46 +0900
Subject: [ruby-changes:1859] matz - Ruby:r13350 (trunk): * lib/fileutils.rb (FileUtils::Entry_::copy): prevent self copy of

matz	2007-09-06 22:59:37 +0900 (Thu, 06 Sep 2007)

  New Revision: 13350

  Modified files:
    trunk/ChangeLog
    trunk/lib/fileutils.rb

  Log:
    * lib/fileutils.rb (FileUtils::Entry_::copy): prevent self copy of
      directories.
    
    * lib/fileutils.rb (FileUtils::fu_each_src_dest0): use try_convert.
    
    * lib/fileutils.rb (FileUtils::fu_update_option): ditto.

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/fileutils.rb?r1=13350&r2=13349
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13350&r2=13349

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 13349)
+++ ChangeLog	(revision 13350)
@@ -1,3 +1,12 @@
+Thu Sep  6 22:57:01 2007  Yukihiro Matsumoto  <matz@r...>
+
+	* lib/fileutils.rb (FileUtils::Entry_::copy): prevent self copy of
+	  directories.
+
+	* lib/fileutils.rb (FileUtils::fu_each_src_dest0): use try_convert.
+
+	* lib/fileutils.rb (FileUtils::fu_update_option): ditto.
+
 Thu Sep  6 21:36:33 2007  Yukihiro Matsumoto  <matz@r...>
 
 	* include/ruby/oniguruma.h (OnigEncodingTypeST): add end parameter
Index: lib/fileutils.rb
===================================================================
--- lib/fileutils.rb	(revision 13349)
+++ lib/fileutils.rb	(revision 13350)
@@ -1224,6 +1224,9 @@
       when file?
         copy_file dest
       when directory?
+        if !File.exist?(dest) and /^#{Regexp.quote(path)}/ =~ File.dirname(dest)
+          raise ArgumentError, "cannot copy directory %s to itself %s" % [path, dest]
+        end
         begin
           Dir.mkdir dest
         rescue
@@ -1392,8 +1395,8 @@
   private_module_function :fu_each_src_dest
 
   def fu_each_src_dest0(src, dest)   #:nodoc:
-    if src.is_a?(Array)
-      src.each do |s|
+    if tmp = Array.try_convert(src)
+      tmp.each do |s|
         s = File.path(s)
         yield s, File.join(dest, File.basename(s))
       end
@@ -1436,8 +1439,8 @@
   private_module_function :fu_check_options
 
   def fu_update_option(args, new)   #:nodoc:
-    if args.last.is_a?(Hash)
-      args[-1] = args.last.dup.update(new)
+    if tmp = Hash.try_convert(args.last)
+      args[-1] = tmp.dup.update(new)
     else
       args.push new
     end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

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