summaryrefslogtreecommitdiffstats
path: root/src/xml
diff options
context:
space:
mode:
Diffstat (limited to 'src/xml')
-rw-r--r--src/xml/dom/qdom.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp
index 2ac4c69b7f..603704f916 100644
--- a/src/xml/dom/qdom.cpp
+++ b/src/xml/dom/qdom.cpp
@@ -6197,12 +6197,28 @@ bool QDomDocument::setContent(const QByteArray &data, bool namespaceProcessing,
This function reads the XML document from the IO device \a dev, returning
true if the content was successfully parsed; otherwise returns \c false.
+
+ \note This method will try to open \a dev in read-only mode if it is not
+ already open. In that case, the caller is responsible for calling close.
+ This will change in Qt 7, which will no longer open \a dev. Applications
+ shoul therefore open the device themselves before calling setContent.
*/
bool QDomDocument::setContent(QIODevice* dev, bool namespaceProcessing, QString *errorMsg, int *errorLine, int *errorColumn)
{
if (!impl)
impl = new QDomDocumentPrivate();
+#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
+ if (!dev->isOpen()) {
+ qWarning("QDomDocument called with unopened QIODevice. "
+ "This will not be supported in future Qt versions");
+ if (!dev->open(QIODevice::ReadOnly)) {
+ qWarning("QDomDocument::setContent: Failed to open device");
+ return false;
+ }
+ }
+#endif
+
QXmlStreamReader streamReader(dev);
streamReader.setNamespaceProcessing(namespaceProcessing);
return IMPL->setContent(&streamReader, namespaceProcessing, errorMsg, errorLine, errorColumn);