diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-07-03 12:23:43 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-07-03 12:23:43 +0000 |
commit | fb2f8e0f728a13bafaf88ab90d5a0b409bd3590e (patch) | |
tree | 248f8b8eba1e0a370a3760ebf27dea301110dde2 | |
parent | fe21cf8b3667e499086f937c0cbcc89840c7df46 (diff) |
merges r31995 and r31998 from trunk into ruby_1_9_2.
--
* lib/rexml/parsers/xpathparser.rb
(REXML::Parsers::XPathParser#parse),
test/rexml/test_elements.rb
(ElementsTester::test_each_with_frozen_condition):
don't modify original XPath. fixes #4164
Reported by Pavel Shved. Thanks!!!
--
* ChangeLog: fix ticket number at r31995. fixes #4161 is correct.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@32378 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 18 | ||||
-rw-r--r-- | lib/rexml/parsers/xpathparser.rb | 3 | ||||
-rw-r--r-- | test/rexml/test_elements.rb | 9 | ||||
-rw-r--r-- | version.h | 2 |
4 files changed, 30 insertions, 2 deletions
@@ -1,3 +1,21 @@ +Sat Jun 11 16:04:03 2011 Kouhei Sutou <kou@cozmixng.org> + + * lib/rexml/parsers/xpathparser.rb + (REXML::Parsers::XPathParser#parse), + test/rexml/test_elements.rb + (ElementsTester#test_each_with_frozen_condition): + don't modify original XPath. fixes #4164 + Reported by Pavel Shved. Thanks!!! + +Sat Jun 11 16:04:03 2011 Kouhei Sutou <kou@cozmixng.org> + + * lib/rexml/parsers/xpathparser.rb + (REXML::Parsers::XPathParser#parse), + test/rexml/test_elements.rb + (ElementsTester::test_each_with_frozen_condition): + don't modify original XPath. fixes #4164 + Reported by Pavel Shved. Thanks!!! + Mon Jun 6 09:39:43 2011 Aaron Patterson <aaron@tenderlovemaking.com> * ext/psych/parser.c (parse): release event objects to plug memory diff --git a/lib/rexml/parsers/xpathparser.rb b/lib/rexml/parsers/xpathparser.rb index 2db37a2578..a37dbdd4b6 100644 --- a/lib/rexml/parsers/xpathparser.rb +++ b/lib/rexml/parsers/xpathparser.rb @@ -17,8 +17,9 @@ module REXML end def parse path + path = path.dup path.gsub!(/([\(\[])\s+/, '\1') # Strip ignorable spaces - path.gsub!( /\s+([\]\)])/, '\1' ) + path.gsub!( /\s+([\]\)])/, '\1') parsed = [] path = OrExpr(path, parsed) parsed diff --git a/test/rexml/test_elements.rb b/test/rexml/test_elements.rb index 210004a1c0..7d2839e261 100644 --- a/test/rexml/test_elements.rb +++ b/test/rexml/test_elements.rb @@ -84,6 +84,15 @@ class ElementsTester < Test::Unit::TestCase assert_equal 7, count end + def test_each_with_frozen_condition + doc = Document.new('<books><book name="Ruby"/><book name="XML"/></books>') + names = [] + doc.root.elements.each('book'.freeze) do |element| + names << element.attributes["name"] + end + assert_equal(["Ruby", "XML"], names) + end + def test_elements_to_a doc = Document.new '<a>sean<b/>elliott<c/></a>' assert_equal 2, doc.root.elements.to_a.size @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.2" -#define RUBY_PATCHLEVEL 277 +#define RUBY_PATCHLEVEL 278 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1 |