Bug #4161: ReXML wants "elements.each" argument to be not frozen http://redmine.ruby-lang.org/issues/show/4161 Author: Pavel Shved Status: Open, Priority: Normal ruby -v: ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux] Here's a simple program that uses ReXML: require 'rexml/document' doc = REXML::Document.new File.new(ARGV[0]) query = "element".freeze doc.elements.each(query) do |elem| puts elem.name end I expected the program to work without errors (when called with a valid XML file as its first command-line argument). However the program fails with a backtrace: /home/pavel/ruby-1.9/lib/ruby/1.9.1/rexml/parsers/xpathparser.rb:20:in `gsub!': can't modify frozen string (RuntimeError) from /home/pavel/ruby-1.9/lib/ruby/1.9.1/rexml/parsers/xpathparser.rb:20:in `parse' from /home/pavel/ruby-1.9/lib/ruby/1.9.1/rexml/xpath_parser.rb:57:in `parse' from /home/pavel/ruby-1.9/lib/ruby/1.9.1/rexml/xpath.rb:64:in `each' from /home/pavel/ruby-1.9/lib/ruby/1.9.1/rexml/element.rb:906:in `each' from a.rb:5:in `<main>' If the string is not frozen, it works well. In ruby 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux] it also works well. Is there any reason to require the argument of elements_each to be frozen? ---------------------------------------- http://redmine.ruby-lang.org