diff --git a/lib/redcloth3.rb b/lib/redcloth3.rb
index 0c44346..f9c9054 100644
--- a/lib/redcloth3.rb
+++ b/lib/redcloth3.rb
@@ -525,7 +525,7 @@ class RedCloth3 < String
tatts = pba( tatts, 'table' )
tatts = shelve( tatts ) if tatts
rows = []
- fullrow.gsub!(/([^|])\n/, "\\1
")
+ fullrow.gsub!(/([^|\s])\s*\n/, "\\1
")
fullrow.each_line do |row|
ratts, row = pba( $1, 'tr' ), $2 if row =~ /^(#{A}#{C}\. )(.*)/m
cells = []
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 6d81653..65a91b2 100644
--- a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb
+++ b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb
@@ -249,6 +249,28 @@ EXPECTED
assert_equal expected.gsub(%r{\s+}, ''), to_html(raw).gsub(%r{\s+}, '')
end
+ def test_table_with_trailing_whitespace
+ raw = <<-RAW
+This is a table with trailing whitespace in one row:
+
+|cell11|cell12|
+|cell21|cell22|
+|cell31|cell32|
+RAW
+
+ expected = <<-EXPECTED
+
This is a table with trailing whitespace in one row:
+ +cell11 | cell12 |
cell21 | cell22 |
cell31 | cell32 |