summaryrefslogtreecommitdiffstats
path: root/src/nfc
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@theqtcompany.com>2016-05-19 19:20:55 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2016-05-31 08:00:10 +0000
commitb9aae35fab6a256705fc3e2bd8d001075fc28efa (patch)
tree322f8a30542408b31c94fc0d8d16ec8c1556ec4c /src/nfc
parenta084e2160a345162681af984d9c265f619be7124 (diff)
QNearFieldTagType1Private: take more care over m_tlv{Writ,Read}er.
The writer wasn't initialized; Coverity grumbled (CID 22323). Various stanzas take for granted that one or other is set; assert there. Various stanzas created each afresh, without considering they might be leaking a prior one; delete first (could probably have asserted == 0 instead). Change-Id: I4c792fbbd611e06c28235ceafee40cc18268c60d Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'src/nfc')
-rw-r--r--src/nfc/qnearfieldtagtype1.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/nfc/qnearfieldtagtype1.cpp b/src/nfc/qnearfieldtagtype1.cpp
index cbd1c1a6..778deda5 100644
--- a/src/nfc/qnearfieldtagtype1.cpp
+++ b/src/nfc/qnearfieldtagtype1.cpp
@@ -76,7 +76,8 @@ public:
QNearFieldTagType1Private(QNearFieldTagType1 *q)
: q_ptr(q), m_readNdefMessageState(NotReadingNdefMessage),
m_tlvReader(0),
- m_writeNdefMessageState(NotWritingNdefMessage)
+ m_writeNdefMessageState(NotWritingNdefMessage),
+ m_tlvWriter(0)
{ }
QNearFieldTagType1 *q_ptr;
@@ -164,11 +165,13 @@ void QNearFieldTagType1Private::progressToNextNdefReadMessageState()
}
m_readNdefMessageState = NdefReadReadingTlv;
+ delete m_tlvReader;
m_tlvReader = new QTlvReader(q);
// fall through
}
case NdefReadReadingTlv:
+ Q_ASSERT(m_tlvReader);
while (!m_tlvReader->atEnd()) {
if (!m_tlvReader->readNext())
break;
@@ -240,11 +243,13 @@ void QNearFieldTagType1Private::progressToNextNdefWriteMessageState()
}
m_writeNdefMessageState = NdefWriteReadingTlv;
+ delete m_tlvReader;
m_tlvReader = new QTlvReader(q);
// fall through
}
case NdefWriteReadingTlv:
+ Q_ASSERT(m_tlvReader);
while (!m_tlvReader->atEnd()) {
if (!m_tlvReader->readNext())
break;
@@ -264,6 +269,7 @@ void QNearFieldTagType1Private::progressToNextNdefWriteMessageState()
// fall through
case NdefWriteWritingTlv:
+ delete m_tlvWriter;
m_tlvWriter = new QTlvWriter(q);
// write old TLVs
@@ -282,6 +288,7 @@ void QNearFieldTagType1Private::progressToNextNdefWriteMessageState()
// fall through
case NdefWriteWritingTlvFlush:
// flush the writer
+ Q_ASSERT(m_tlvWriter);
if (m_tlvWriter->process(true)) {
m_nextExpectedRequestId = QNearFieldTarget::RequestId();
m_writeNdefMessageState = NotWritingNdefMessage;