diff --git a/lib/rexml/parsers/baseparser.rb b/lib/rexml/parsers/baseparser.rb
index 342f9482..a0893d16 100644
--- a/lib/rexml/parsers/baseparser.rb
+++ b/lib/rexml/parsers/baseparser.rb
@@ -505,15 +505,13 @@ def pull_event
private :pull_event
def entity( reference, entities )
- value = nil
- value = entities[ reference ] if entities
- if value
- record_entity_expansion
- else
- value = DEFAULT_ENTITIES[ reference ]
- value = value[2] if value
- end
- unnormalize( value, entities ) if value
+ return unless entities
+
+ value = entities[ reference ]
+ return if value.nil?
+
+ record_entity_expansion
+ unnormalize( value, entities )
end
# Escapes all possible entities
diff --git a/test/test_pullparser.rb b/test/test_pullparser.rb
index 827fad1d..090c94b3 100644
--- a/test/test_pullparser.rb
+++ b/test/test_pullparser.rb
@@ -252,6 +252,36 @@ def test_with_default_entity
end
end
+ def test_with_only_default_entities
+ member_value = "<p>#{'A' * @default_entity_expansion_text_limit}</p>"
+ source = <<-XML
+
+
#{'A' * @default_entity_expansion_text_limit}
" + assert_equal(expected_value, events['member'].strip) + assert_equal(0, parser.entity_expansion_count) + assert do + events['member'].bytesize > @default_entity_expansion_text_limit + end + end + def test_entity_expansion_text_limit source = <<-XML +#{'A' * @default_entity_expansion_text_limit}
" + assert_equal(expected_value, text_value.strip) + assert_equal(0, sax.entity_expansion_count) + assert do + text_value.bytesize > @default_entity_expansion_text_limit + end + end + def test_entity_expansion_text_limit source = <<-XML +#{'A' * @default_entity_expansion_text_limit}
" + assert_equal(expected_value, listener.text_value.strip) + assert do + listener.text_value.bytesize > @default_entity_expansion_text_limit + end + end + end # For test_listener class RequestReader