[#24112] ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。原因を追求してたのですが、力尽きました。

19 messages 2004/08/18
[#24127] Re: ruby/tk crashes on bcc32 — Hidetoshi NAGAI <nagai@...> 2004/08/19

永井@知能.九工大です.

[#24131] Re: ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/08/19

山本です。

[#24135] Re: ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/08/19

山本です。試行錯誤の結果、これで落ちなくなりました。

[ruby-dev:24031] Re: 1.8.2-preview2?

From: Minero Aoki <aamine@...>
Date: 2004-08-08 19:49:59 UTC
List: ruby-dev #24031
青木です。

  In mail "[ruby-dev:24024] Re: 1.8.2-preview2?"
    nobu@ruby-lang.org wrote:

> なかだです。

> > これですが、cp_r 'a', 'b' が a/* → b/* のコピーになるんですよね?
> > できるだけ動作は cp(1) 互換にしておきたいので、仕様を変えてしまう
> > のはちょっと……。
> 
> GNU cpでも現在のfileutils.rbでもそうなってると思いますが。
> 
>   $ ls old
>   a  b  c
>   $ rm -fr new
>   $ cp -r old new
>   $ ls new
>   a  b  c

あ、いや、そうでなくて new が存在する場合のことを言ってたん
ですが、それはそれでパッチを読み違えてました。

ちょっと混乱してきたので整理します。


= 元々のメール [ruby-talk:101077] のエラーの原因

なんか報告にある行数と微妙に合わないんですが、行の内容を見る
限り、fu_same? で Errno::ENOENT になっているようです。が、
fu_same? は当時も今も

  def fu_same?(a, b)
    if have_st_ino?
      st1 = File.stat(a)
      st2 = File.stat(b)
      st1.dev == st2.dev and st1.ino == st2.ino
    else
      File.expand_path(a) == File.expand_path(b)
    end
  rescue Errno::ENOENT
    return false
  end

となっており、ENOENT が外に出るのは明らかに変です。従って、
この報告は何か間違っていると思います。


= 中田さんのパッチの解釈

cp_r %w(src1 src2), 'destdir' のように第一引数が配列のときは、
無条件に destdir を作成する。


で、これはアグレッシブすぎるのでとりこめません。
少なくとも 1.8 には入れるべきでないと思います。
-------------------------------------------------------------------
青木峰郎

In This Thread