]> git.lyx.org Git - lyx.git/commitdiff
Fix table crash reported on Windows.
authorRichard Kimberly Heck <rikiheck@lyx.org>
Sun, 2 Jun 2024 18:12:23 +0000 (14:12 -0400)
committerRichard Kimberly Heck <rikiheck@lyx.org>
Fri, 7 Jun 2024 19:59:38 +0000 (15:59 -0400)
(cherry picked from commit 3e796c680a11593bd09433be22bec45dcfe0d7a7)

src/insets/InsetTabular.cpp

index da8e4269352a0d10ad9ae10ed4cca00e3f913b66..31aac87dc909fc389ab36f6e0dfb3d59e2a943a0 100644 (file)
@@ -808,6 +808,8 @@ void Tabular::deleteRow(row_type const row, bool const force)
        if (nrows() == 1)
                return;
 
+       LASSERT(row < nrows(), return);
+
        // If we are in change tracking mode, and the row is not marked
        // as inserted by the same author, we do not delete it, but mark
        // it deleted.
@@ -976,6 +978,8 @@ void Tabular::deleteColumn(col_type const col, bool const force)
        if (ncols() == 1)
                return;
 
+       LASSERT(col < ncols(), return);
+
        // If we are in change tracking mode, and the column is not marked
        // as inserted by the same author, we do not delete it, but mark
        // it deleted.
@@ -6779,8 +6783,11 @@ void InsetTabular::tabularFeatures(Cursor & cur,
                        }
                }
 
-               for (row_type r = sel_row_start; r <= sel_row_end; ++r)
+               for (row_type r = sel_row_end; r >= sel_row_start; --r) {
                        tabular.deleteRow(r);
+                       if (r == 0)
+                               break;
+               }
                if (sel_row_start >= tabular.nrows())
                        --sel_row_start;
                cur.idx() = tabular.cellIndex(sel_row_start, column);
@@ -6802,8 +6809,11 @@ void InsetTabular::tabularFeatures(Cursor & cur,
                                        tabular.leftLine(tabular.cellIndex(r, 0)));
                }
 
-               for (col_type c = sel_col_start; c <= sel_col_end; ++c)
+               for (col_type c = sel_col_end; c >= sel_col_start; --c) {
                        tabular.deleteColumn(c);
+                       if (c == 0)
+                               break;
+               }
                if (sel_col_start >= tabular.ncols())
                        --sel_col_start;
                cur.idx() = tabular.cellIndex(row, sel_col_start);