diff --git a/lib/redcloth3.rb b/lib/redcloth3.rb
index 0d6ca324c..dbab20750 100644
--- a/lib/redcloth3.rb
+++ b/lib/redcloth3.rb
@@ -525,11 +525,12 @@ class RedCloth3 < String
tatts = pba( tatts, 'table' )
tatts = shelve( tatts ) if tatts
rows = []
-
+ fullrow.gsub!(/([^|])\n/, "\\1
")
fullrow.each_line do |row|
ratts, row = pba( $1, 'tr' ), $2 if row =~ /^(#{A}#{C}\. )(.*)/m
cells = []
row.split( /(\|)(?![^\[\|]*\]\])/ )[1..-2].each do |cell|
+ Rails.logger.debug "cell: #{cell}"
next if cell == '|'
ctyp = 'd'
ctyp = 'h' if cell =~ /^_/
diff --git a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb
index 69c697daa..324cea1e6 100644
--- a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb
+++ b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb
@@ -268,6 +268,42 @@ EXPECTED
assert_equal expected.gsub(%r{\s+}, ''), to_html(raw).gsub(%r{\s+}, '')
end
+ def test_tables_with_lists
+ raw = <<-RAW
+This is a table with lists:
+
+|cell11|cell12|
+|cell21|ordered list
+# item
+# item 2|
+|cell31|unordered list
+* item
+* item 2|
+
+RAW
+
+ expected = <<-EXPECTED
+
This is a table with lists:
+ +cell11 | +cell12 | +
cell21 | +ordered list # item # item 2 |
+
cell31 | +unordered list * item * item 2 |
+
[msg1][msg2]
', to_html('[msg1][msg2]') end