From: "U.Nakamura" Date: 2010-01-12T10:04:51+09:00 Subject: [ruby-dev:40048] Re: [Bug:trunk] ENV.[]= should raise an error on failure こんにちは、なかむら(う)です。 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