diff options
author | Michael Meeks <michael.meeks@collabora.com> | 2020-11-27 14:47:11 +0000 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2020-11-27 14:47:29 +0000 |
commit | 2e438b8f2a6ecd070388f62c1e630253d28e05a8 (patch) | |
tree | d31e58f2fa612553871c6cb4c6b2952c67f547b0 | |
parent | g backport: fix a temp file leak (diff) | |
download | online-private/michael/distro/collabora/co-6-4.tar.gz online-private/michael/distro/collabora/co-6-4.zip |
Fix unit test to not rely on under-defined behavior.
private/michael/distro/collabora/co-6-4
Change-Id: I4ad9ce7710f7f25884ca2ab31aabd82e2dc5be8e
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
-rw-r--r-- | net/Buffer.hpp | 7 | ||||
-rw-r--r-- | test/WhiteBoxTests.cpp | 5 |
2 files changed, 9 insertions, 3 deletions
diff --git a/net/Buffer.hpp b/net/Buffer.hpp index 401a11ceeb..88373a2e45 100644 --- a/net/Buffer.hpp +++ b/net/Buffer.hpp @@ -35,7 +35,9 @@ public: const char *getBlock() const { - return &_buffer[_offset]; + if (_size) + return &_buffer[_offset]; + return nullptr; } std::size_t getBlockSize() const @@ -45,6 +47,9 @@ public: void eraseFirst(std::size_t len) { + if (len <= 0) + return; + assert(_offset + len <= _buffer.size()); assert(_offset + _size == _buffer.size()); diff --git a/test/WhiteBoxTests.cpp b/test/WhiteBoxTests.cpp index 1df5bf9cbd..c069bb8534 100644 --- a/test/WhiteBoxTests.cpp +++ b/test/WhiteBoxTests.cpp @@ -994,8 +994,9 @@ void WhiteBoxTests::testBufferClass() buf.eraseFirst(1); CPPUNIT_ASSERT_EQUAL(i - 1, buf.size()); CPPUNIT_ASSERT_EQUAL(i == 1, buf.empty()); // Not empty until the last element. - CPPUNIT_ASSERT(buf.getBlock() != nullptr); - CPPUNIT_ASSERT_EQUAL(0, memcmp(buf.getBlock(), data + (sizeof(data) - i) + 1, buf.size())); + CPPUNIT_ASSERT_EQUAL(buf.getBlock() != nullptr, !buf.empty()); + if (!buf.empty()) + CPPUNIT_ASSERT_EQUAL(0, memcmp(buf.getBlock(), data + (sizeof(data) - i) + 1, buf.size())); } // Large data. |