3c93286f08
Serialization of the Qt container classes is accomplished by breaking up the data into primitive units. On the receiver side, these units should be read atomically to guarantee integrity of the container. Deserialization procedures for QHash and QMap were already implemented in accordance with this strategy and have the following behavior: - a previously latched error status is saved for the caller. This overrides possible different errors in the current read. This is consistent with the treatment of primitive types. - if an error occurs during the deserialization, the container is cleared. To make the API consistent, this patch adjusts the behavior of QList, QLinkedList, QVector, and QSet deserialization. On the implementation side we accomplish this with a private StreamStateSaver RAII class that consolidates the handling of the stream status for all containers. [ChangeLog][Important Behavior Changes][QtCore][QDataStream] Incomplete reads of Qt containers are now handled same way as for primitive types, meaning that previous errors are latched. Task-number: QTBUG-54022 Change-Id: I5c77257fe2a4637e8a7e6cf3cd43091c8469340e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> |
||
---|---|---|
.. | ||
largefile | ||
qabstractfileengine | ||
qbuffer | ||
qdatastream | ||
qdataurl | ||
qdebug | ||
qdir | ||
qdiriterator | ||
qfile | ||
qfileinfo | ||
qfileselector | ||
qfilesystementry | ||
qfilesystemwatcher | ||
qiodevice | ||
qipaddress | ||
qlockfile | ||
qloggingcategory | ||
qloggingregistry | ||
qnodebug | ||
qprocess | ||
qprocess-noapplication | ||
qprocessenvironment | ||
qresourceengine | ||
qsavefile | ||
qsettings | ||
qstandardpaths | ||
qstorageinfo | ||
qtemporarydir | ||
qtemporaryfile | ||
qtextstream | ||
qurl | ||
qurlinternal | ||
qurlquery | ||
qwinoverlappedionotifier | ||
io.pro |