summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2020-11-27 14:47:11 +0000
committerMichael Meeks <michael.meeks@collabora.com>2020-11-27 14:47:29 +0000
commit2e438b8f2a6ecd070388f62c1e630253d28e05a8 (patch)
treed31e58f2fa612553871c6cb4c6b2952c67f547b0
parentg backport: fix a temp file leak (diff)
downloadonline-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.hpp7
-rw-r--r--test/WhiteBoxTests.cpp5
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.