Project

General

Profile

Actions

Bug #2591

closed

ENV.[]= should raise an error on failure

Added by matz (Yukihiro Matsumoto) over 14 years ago. Updated almost 13 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.2dev (2010-01-12 trunk 26302) [x86_64-freebsd8.0]
Backport:
[ruby-dev:40024]

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" writes:

| 現在 ENV.[]= は setenv(3) や putenv(3) の返り値を見ていませんが、
|エラーは検知して例外を上げるべきではないでしょうか。
|
| わかりやすい例では ENV["A="] = "1" のように不正な名前の環境変数を
|設定しようとすると Error::EINVAL が発生するようになります。

賛成します。コミットしてくださいませんか。
=end

Actions #1

Updated by usa (Usaku NAKAMURA) over 14 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, wrote:

ところで、このコメントもそのまま取ると以下のようにするのが正しい
ように思えますが、真意は何でしょうか。

if (*value) {
    /* bufの作成 */
    putenv(buf);
} else {
    SetEnvironmentVariable(name, value);
}

条件が間違っていたのは全くその通りです orz
commitしておきました。

必ずputenv()を通しているのは、素のgetenv()が見るのは真の環境
変数領域ではなくputenv()が操作しているコピー領域であるため、
そちらに元の環境変数値が残ってしまうのを避けるためです。
つまり、空の環境変数値を設定したとき、元の環境変数値が残るよ
り、その環境変数が消える方がマシ、という判断です。
なお、これらの話はrubyには直接の影響を与えるものではなくて、
子プロセスに伝播した時にのみ影響します。

それでは。

U.Nakamura

=end

Actions #2

Updated by naruse (Yui NARUSE) over 14 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

Actions

Also available in: Atom PDF

Like0
Like0Like0