diff options
author | Jay Berkenbilt <ejb@ql.org> | 2021-12-17 13:33:42 +0100 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2021-12-17 18:38:52 +0100 |
commit | fee7489ee4c90c6dbd11e57ecc8e888c8f038716 (patch) | |
tree | 9a1872d7e52b2db3ec2cb44109a3a3918927621d /libtests | |
parent | 8c4ad6b946a762fd57443a3647e0cc620ad6eae4 (diff) | |
download | qpdf-fee7489ee4c90c6dbd11e57ecc8e888c8f038716.tar.zst |
Add Pl_Buffer::getMallocBuffer
Diffstat (limited to 'libtests')
-rw-r--r-- | libtests/buffer.cc | 26 | ||||
-rw-r--r-- | libtests/qtest/buffer/buffer.out | 1 |
2 files changed, 27 insertions, 0 deletions
diff --git a/libtests/buffer.cc b/libtests/buffer.cc index bd28746f..23d82e7b 100644 --- a/libtests/buffer.cc +++ b/libtests/buffer.cc @@ -6,6 +6,7 @@ #include <stdexcept> #include <iostream> #include <cassert> +#include <cstring> static unsigned char* uc(char const* s) { @@ -98,6 +99,31 @@ int main() b = bp3.getBuffer(); std::cout << "size: " << b->getSize() << std::endl; delete b; + + // Malloc buffer should behave similarly. + Pl_Buffer bp4("bp4"); + bp4.write(uc("asdf"), 4); + unsigned char* mbuf; + size_t len; + try + { + bp4.getMallocBuffer(&mbuf, &len); + assert(false); + } + catch (std::logic_error& e) + { + std::cout << "malloc buffer logic error: " << e.what() << std::endl; + } + bp4.finish(); + bp4.getMallocBuffer(&mbuf, &len); + assert(len == 4); + assert(memcmp(mbuf, uc("asdf"), 4) == 0); + free(mbuf); + bp4.write(uc(""), 0); + bp4.finish(); + bp4.getMallocBuffer(&mbuf, &len); + assert(mbuf == nullptr); + assert(len == 0); } catch (std::exception& e) { diff --git a/libtests/qtest/buffer/buffer.out b/libtests/qtest/buffer/buffer.out index e1e404b1..4143e58f 100644 --- a/libtests/qtest/buffer/buffer.out +++ b/libtests/qtest/buffer/buffer.out @@ -11,4 +11,5 @@ data: mooquack size: 0 size: 0 size: 0 +malloc buffer logic error: Pl_Buffer::getMallocBuffer() called when not ready done |