diff options
-rw-r--r-- | src/widgets/itemviews/qheaderview.cpp | 35 | ||||
-rw-r--r-- | tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp | 1 |
2 files changed, 27 insertions, 9 deletions
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index eac25d3833..27b85c678e 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -3635,25 +3635,42 @@ void QHeaderViewPrivate::write(QDataStream &out) const bool QHeaderViewPrivate::read(QDataStream &in) { int orient, order, align, global; - in >> orient; - orientation = (Qt::Orientation)orient; + int sortIndicatorSectionIn; + bool sortIndicatorShownIn; + int lengthIn; + QVector<int> visualIndicesIn; + QVector<int> logicalIndicesIn; + QHash<int, int> hiddenSectionSizeIn; + in >> orient; in >> order; - sortIndicatorOrder = (Qt::SortOrder)order; - in >> sortIndicatorSection; - in >> sortIndicatorShown; + in >> sortIndicatorSectionIn; + in >> sortIndicatorShownIn; - in >> visualIndices; - in >> logicalIndices; + in >> visualIndicesIn; + in >> logicalIndicesIn; QBitArray sectionHidden; in >> sectionHidden; - in >> hiddenSectionSize; + in >> hiddenSectionSizeIn; + in >> lengthIn; - in >> length; int unusedSectionCount; // For compatibility in >> unusedSectionCount; + + if (in.status() != QDataStream::Ok || lengthIn < 0) + return false; + + orientation = static_cast<Qt::Orientation>(orient); + sortIndicatorOrder = static_cast<Qt::SortOrder>(order); + sortIndicatorSection = sortIndicatorSectionIn; + sortIndicatorShown = sortIndicatorShownIn; + visualIndices = visualIndicesIn; + logicalIndices = logicalIndicesIn; + hiddenSectionSize = hiddenSectionSizeIn; + length = lengthIn; + in >> movableSections; in >> clickableSections; in >> highlightSelected; diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp index 869b335a95..6f11609542 100644 --- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp +++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp @@ -1653,6 +1653,7 @@ void tst_QHeaderView::saveRestore() QByteArray s2 = h2.saveState(); QVERIFY(s1 == s2); + QVERIFY(!h2.restoreState(QByteArrayLiteral("Garbage"))); } void tst_QHeaderView::defaultSectionSizeTest() |