Bug #2591
closedENV.[]= should raise an error on failure
Description
=begin
まつもと ゆきひろです
In message "Re: [ruby-dev:40023] [Bug:trunk] ENV.[]= should raise an error on failure"
on Mon, 11 Jan 2010 03:42:34 +0900, "Akinori MUSHA" knu@iDaemons.org writes:
| 現在 ENV.[]= は setenv(3) や putenv(3) の返り値を見ていませんが、
|エラーは検知して例外を上げるべきではないでしょうか。
|
| わかりやすい例では ENV["A="] = "1" のように不正な名前の環境変数を
|設定しようとすると Error::EINVAL が発生するようになります。
賛成します。コミットしてくださいませんか。
=end
Updated by usa (Usaku NAKAMURA) about 15 years ago
=begin
こんにちは、なかむら(う)です。
In message "[ruby-dev:40026] Re: [Bug:trunk] ENV.[]= should raise an error on failure"
on Jan.11,2010 13:28:01, knu@iDaemons.org wrote:
ところで、このコメントもそのまま取ると以下のようにするのが正しい
ように思えますが、真意は何でしょうか。if (*value) { /* bufの作成 */ putenv(buf); } else { SetEnvironmentVariable(name, value); }
条件が間違っていたのは全くその通りです orz
commitしておきました。
必ずputenv()を通しているのは、素のgetenv()が見るのは真の環境
変数領域ではなくputenv()が操作しているコピー領域であるため、
そちらに元の環境変数値が残ってしまうのを避けるためです。
つまり、空の環境変数値を設定したとき、元の環境変数値が残るよ
り、その環境変数が消える方がマシ、という判断です。
なお、これらの話はrubyには直接の影響を与えるものではなくて、
子プロセスに伝播した時にのみ影響します。
それでは。¶
U.Nakamura usa@garbagecollect.jp
=end
Updated by naruse (Yui NARUSE) about 15 years ago
- Status changed from Open to Closed
- ruby -v set to ruby 1.9.2dev (2010-01-12 trunk 26302) [x86_64-freebsd8.0]
=begin
=end