summaryrefslogtreecommitdiffstats
path: root/tool
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-06-30 07:55:36 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-06-30 07:55:36 +0000
commit720d69b4de8328f2d40621c7582f5850a19dd9c7 (patch)
tree949db184b25902d574bb3c8613031bc95831d663 /tool
parent41145702181aaf16e58c54953bcff88b8004ac1e (diff)
downloadruby-720d69b4de8328f2d40621c7582f5850a19dd9c7.tar.gz
ruby-720d69b4de8328f2d40621c7582f5850a19dd9c7.tar.xz
ruby-720d69b4de8328f2d40621c7582f5850a19dd9c7.zip
* tool/mkconfig.rb (RbConfig.expand): get rid of exceptions on
frozen strings unless really changed. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool')
-rwxr-xr-xtool/mkconfig.rb8
1 files changed, 4 insertions, 4 deletions
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
index 116791daf..a66a20f3e 100755
--- a/tool/mkconfig.rb
+++ b/tool/mkconfig.rb
@@ -181,21 +181,21 @@ print <<EOS
MAKEFILE_CONFIG = {}
CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}
def RbConfig::expand(val, config = CONFIG)
- val.gsub!(/\\$\\$|\\$\\(([^()]+)\\)|\\$\\{([^{}]+)\\}/) do
+ newval = val.gsub(/\\$\\$|\\$\\(([^()]+)\\)|\\$\\{([^{}]+)\\}/) {
var = $&
if !(v = $1 || $2)
'$'
elsif key = config[v = v[/\\A[^:]+(?=(?::(.*?)=(.*))?\\z)/]]
pat, sub = $1, $2
config[v] = false
- RbConfig::expand(key, config)
- config[v] = key
+ config[v] = RbConfig::expand(key, config)
key = key.gsub(/\#{Regexp.quote(pat)}(?=\\s|\\z)/n) {sub} if pat
key
else
var
end
- end
+ }
+ val.replace(newval) unless newval == val
val
end
CONFIG.each_value do |val|