diff --git a/include/cppkafka/buffer.h b/include/cppkafka/buffer.h index 43e71a7c..821e182f 100644 --- a/include/cppkafka/buffer.h +++ b/include/cppkafka/buffer.h @@ -35,6 +35,7 @@ #include #include #include "macros.h" +#include "exceptions.h" namespace cppkafka { @@ -75,6 +76,9 @@ class CPPKAFKA_API Buffer { Buffer(const T* data, size_t size) : data_(reinterpret_cast(data)), size_(size) { static_assert(sizeof(T) == sizeof(DataType), "sizeof(T) != sizeof(DataType)"); + if ((data_ == nullptr) && (size_ > 0)) { + throw Exception("Invalid buffer configuration"); + } } /** diff --git a/tests/buffer_test.cpp b/tests/buffer_test.cpp index a709fafd..6659d3bb 100644 --- a/tests/buffer_test.cpp +++ b/tests/buffer_test.cpp @@ -15,6 +15,9 @@ TEST_CASE("conversions", "[buffer]") { const Buffer buffer(data); const Buffer empty_buffer; + SECTION("construction") { + CHECK_THROWS_AS(Buffer((const char*)nullptr, 5), Exception); + } SECTION("bool conversion") { CHECK(!!buffer == true);