QIODevice - disallow setTextMode when not open
authorShane Kearns <shane.kearns@accenture.com>
Thu, 20 Oct 2011 15:55:02 +0000 (16:55 +0100)
committerQt by Nokia <qt-info@nokia.com>
Mon, 24 Oct 2011 10:30:53 +0000 (12:30 +0200)
Calling setTextMode() before open() would make the device appear to be
already open and cause later errors.
Added a qWarning and documentation update to prevent this API misuse

Task-number: QTBUG-20905
Change-Id: I2e06cd8e79f4afcf27417ac0eae6ebef980a17aa
Reviewed-by: Thiago Macieira (Intel) <thiago.macieira@intel.com>
Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
src/corelib/io/qiodevice.cpp

index 89987bc..8e1b2d5 100644 (file)
@@ -451,11 +451,17 @@ void QIODevice::setOpenMode(OpenMode openMode)
     otherwise the \l Text flag is removed. This feature is useful for classes
     that provide custom end-of-line handling on a QIODevice.
 
+    The IO device should be opened before calling this function.
+
     \sa open(), setOpenMode()
  */
 void QIODevice::setTextModeEnabled(bool enabled)
 {
     Q_D(QIODevice);
+    if (!isOpen()) {
+        qWarning("QIODevice::setTextModeEnabled: The device is not open");
+        return;
+    }
     if (enabled)
         d->openMode |= Text;
     else