diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-03-03 11:38:26 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-03-03 13:34:57 +0000 |
commit | dd4d4fe1ee74cc6dae370a8a9dcced53dc9a3898 (patch) | |
tree | 6a5c2382068f36563bdba1b16a4a66a84cfe4fe5 /src | |
parent | a5dc5fd2eb7b2b1bccf5605a6479cbff327c1e35 (diff) |
QSurfaceDataProxy: Fix crashes adding the first row of data
Adding one row causes an assert
ASSERT failure in QList::at: "index out of range", file include/QtCore/qlist.h, line 373
since there is no first row to check the column count against.
Check for empty as well.
Task-number: PYSIDE-1438
Change-Id: I225b87b764545b7a430472dc5a4b2e476a26a7ff
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
(cherry picked from commit 106bef0493758ddaeadd3b4d744227cb7feadb70)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/datavisualization/data/qsurfacedataproxy.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/datavisualization/data/qsurfacedataproxy.cpp b/src/datavisualization/data/qsurfacedataproxy.cpp index 81bbcc63..7601d021 100644 --- a/src/datavisualization/data/qsurfacedataproxy.cpp +++ b/src/datavisualization/data/qsurfacedataproxy.cpp @@ -475,7 +475,8 @@ void QSurfaceDataProxyPrivate::setItem(int rowIndex, int columnIndex, const QSur int QSurfaceDataProxyPrivate::addRow(QSurfaceDataRow *row) { - Q_ASSERT(m_dataArray->at(0)->size() == row->size()); + Q_ASSERT(m_dataArray->isEmpty() + || m_dataArray->at(0)->size() == row->size()); int currentSize = m_dataArray->size(); m_dataArray->append(row); return currentSize; @@ -485,7 +486,8 @@ int QSurfaceDataProxyPrivate::addRows(const QSurfaceDataArray &rows) { int currentSize = m_dataArray->size(); for (int i = 0; i < rows.size(); i++) { - Q_ASSERT(m_dataArray->at(0)->size() == rows.at(i)->size()); + Q_ASSERT(m_dataArray->isEmpty() + || m_dataArray->at(0)->size() == rows.at(i)->size()); m_dataArray->append(rows.at(i)); } return currentSize; @@ -494,7 +496,8 @@ int QSurfaceDataProxyPrivate::addRows(const QSurfaceDataArray &rows) void QSurfaceDataProxyPrivate::insertRow(int rowIndex, QSurfaceDataRow *row) { Q_ASSERT(rowIndex >= 0 && rowIndex <= m_dataArray->size()); - Q_ASSERT(m_dataArray->at(0)->size() == row->size()); + Q_ASSERT(m_dataArray->isEmpty() + || m_dataArray->at(0)->size() == row->size()); m_dataArray->insert(rowIndex, row); } @@ -503,7 +506,8 @@ void QSurfaceDataProxyPrivate::insertRows(int rowIndex, const QSurfaceDataArray Q_ASSERT(rowIndex >= 0 && rowIndex <= m_dataArray->size()); for (int i = 0; i < rows.size(); i++) { - Q_ASSERT(m_dataArray->at(0)->size() == rows.at(i)->size()); + Q_ASSERT(m_dataArray->isEmpty() + || m_dataArray->at(0)->size() == rows.at(i)->size()); m_dataArray->insert(rowIndex++, rows.at(i)); } } |