diff options
author | Edward Welbourne <edward.welbourne@theqtcompany.com> | 2016-05-19 19:20:55 +0200 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@qt.io> | 2016-05-31 08:00:10 +0000 |
commit | b9aae35fab6a256705fc3e2bd8d001075fc28efa (patch) | |
tree | 322f8a30542408b31c94fc0d8d16ec8c1556ec4c /src/nfc | |
parent | a084e2160a345162681af984d9c265f619be7124 (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.cpp | 9 |
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; |