From 061f8cb35f8ac155e16943951ae39aa75cbd24d2 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Mon, 19 Aug 2013 12:32:58 -0500 Subject: Fix superenv ENV[] hack We override ENV[] to always return strings under superenv, because legacy formulae assume that CFLAGS, etc. are non-nil. However, the current implementation has a bug. If I simply concatenate ENV['CFLAGS'] with another string, it mutates ENV['CFLAGS']: irb> ENV['CFLAGS'] => "" irb> ENV['CFLAGS'] + 'a' => "a" irb> ENV['CFLAGS'] => "a" Instead, let's simply return an empty string if the key doesn't exist. This is sufficient because the following are equivalent: 1. ENV['CFLAGS'] += "string" 2. ENV['CFLAGS'] = ENV['CFLAGS'] + "string" --- Library/Homebrew/superenv.rb | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to 'Library') diff --git a/Library/Homebrew/superenv.rb b/Library/Homebrew/superenv.rb index 58a801ca5..b3a14fdd3 100644 --- a/Library/Homebrew/superenv.rb +++ b/Library/Homebrew/superenv.rb @@ -29,15 +29,7 @@ module Superenv if has_key? key fetch(key) elsif %w{CPPFLAGS CFLAGS LDFLAGS}.include? key - class << (a = "") - attr_accessor :key - def + value - ENV[key] = value - end - alias_method '<<', '+' - end - a.key = key - a + self[key] = "" end end end -- cgit v1.2.3