Fix table crash reported on Windows.

(cherry picked from commit 3e796c680a)
This commit is contained in:
Richard Kimberly Heck 2024-06-02 14:12:23 -04:00
parent 342a0f5438
commit 90ab21e0e9

View File

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