From abdfefebdf9ffd338683adb1d4fcfe6db4909b49 Mon Sep 17 00:00:00 2001
From: Christian Despres <50160106+despresc@users.noreply.github.com>
Date: Thu, 11 Nov 2021 23:55:37 -0500
Subject: [PATCH] Writers.Shared: Improve toLegacyTable.

Closes #7683.
(PR #7684)
---
 src/Text/Pandoc/Writers/Shared.hs |  2 +-
 test/Tests/Shared.hs              | 16 ++++++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/Text/Pandoc/Writers/Shared.hs b/src/Text/Pandoc/Writers/Shared.hs
index 6b8be3c8b..b23fc1341 100644
--- a/src/Text/Pandoc/Writers/Shared.hs
+++ b/src/Text/Pandoc/Writers/Shared.hs
@@ -508,7 +508,7 @@ toLegacyTable (Caption _ cbody) specs thead tbodies tfoot
       = let (h, w, cBody) = getComponents c
             cRowPieces = cBody : replicate (w - 1) mempty
             cPendingPieces = replicate w $ replicate (h - 1) mempty
-            pendingPieces' = dropWhile null pendingPieces
+            pendingPieces' = drop w pendingPieces
             (pendingPieces'', rowPieces) = placeCutCells pendingPieces' cells'
         in (cPendingPieces <> pendingPieces'', cRowPieces <> rowPieces)
       | otherwise = ([], [])
diff --git a/test/Tests/Shared.hs b/test/Tests/Shared.hs
index e415ea153..5365812fe 100644
--- a/test/Tests/Shared.hs
+++ b/test/Tests/Shared.hs
@@ -56,6 +56,7 @@ testLegacyTable :: [TestTree]
 testLegacyTable =
   [ testCase "decomposes a table with head" $ gen1 @?= expect1
   , testCase "decomposes a table without head" $ gen2 @?= expect2
+  , testCase "decomposes the table from issue 7683" $ gen3 @?= expect3
   ]
   where
     pln = toList . plain . str
@@ -110,3 +111,18 @@ testLegacyTable =
                 ,[pln "j", mempty, mempty]]
               )
     gen2 = toLegacyTable emptyCaption spec1 (th []) [body1] (tf footRows1)
+
+    spec3 = replicate 4 (AlignDefault, ColWidthDefault)
+    body3 = tb 0
+      []
+      [[cl "a" 2 1, cl "b" 1 2, cl "c" 2 1]
+      ,[cl "d" 1 1, cl "e" 1 1]
+      ]
+    expect3 = ( []
+              , replicate 4 AlignDefault
+              , replicate 4 0
+              , []
+              , [[pln "a", pln "b", mempty, pln "c"]
+                ,[mempty, pln "d", pln "e", mempty]]
+              )
+    gen3 = toLegacyTable emptyCaption spec3 (th []) [body3] (tf [])