diff --git a/lib/rdoc/markup/attribute_manager.rb b/lib/rdoc/markup/attribute_manager.rb
index 3296d17af2..6edb30b867 100644
--- a/lib/rdoc/markup/attribute_manager.rb
+++ b/lib/rdoc/markup/attribute_manager.rb
@@ -246,7 +246,7 @@ def add_special pattern, name
# Processes +str+ converting attributes, HTML and specials
def flow str
- @str = str
+ @str = str.dup
mask_protected_sequences
diff --git a/test/test_rdoc_markup_attribute_manager.rb b/test/test_rdoc_markup_attribute_manager.rb
index c0f7666a01..b51e422474 100644
--- a/test/test_rdoc_markup_attribute_manager.rb
+++ b/test/test_rdoc_markup_attribute_manager.rb
@@ -332,6 +332,14 @@ def test_protect
@am.flow("\\_cat_dog"))
end
+ def test_lost_tag_for_the_second_time
+ str = "cat dog"
+ assert_equal(["cat ", @tt_on, "dog", @tt_off],
+ @am.flow(str))
+ assert_equal(["cat ", @tt_on, "dog", @tt_off],
+ @am.flow(str))
+ end
+
def test_special
@am.add_special(RDoc::CrossReference::CROSSREF_REGEXP, :CROSSREF)