mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Print: add a safe-guard if table print rows are too big
We do not support rows larger than a single page as the PrintLayout algorithm will enter an infinite loop, therefore we put a limit of 15 lines for the location text. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
8f58faf431
commit
bfe5ccda1c
1 changed files with 17 additions and 1 deletions
|
@ -1536,7 +1536,23 @@ bool TablePrintModel::setData(const QModelIndex &index, const QVariant &value, i
|
|||
case 3: list.at(index.row())->duration = value.toString();
|
||||
case 4: list.at(index.row())->divemaster = value.toString();
|
||||
case 5: list.at(index.row())->buddy = value.toString();
|
||||
case 6: list.at(index.row())->location = value.toString();
|
||||
case 6: {
|
||||
/* truncate if there are more than N lines of text,
|
||||
* we don't want a row to be larger that a single page! */
|
||||
QString s = value.toString();
|
||||
const int maxLines = 15;
|
||||
int count = 0;
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
if (s.at(i) != QChar('\n'))
|
||||
continue;
|
||||
count++;
|
||||
if (count > maxLines) {
|
||||
s = s.left(i - 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
list.at(index.row())->location = s;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue