diff options
author | m-holger <m-holger@kubitscheck.org> | 2023-11-17 19:06:57 +0100 |
---|---|---|
committer | m-holger <m-holger@kubitscheck.org> | 2023-11-26 13:26:44 +0100 |
commit | 9f7f9496ed26a5490b9f2b847806282cd1ae1146 (patch) | |
tree | 76cfa7d0735f5f43d0f96e0b33e91291626a9eb5 /libqpdf | |
parent | 4c71c8680a8aed21e356d23d9828ebb37d052342 (diff) | |
download | qpdf-9f7f9496ed26a5490b9f2b847806282cd1ae1146.tar.zst |
Add Buffer constructors taking std::string parameters
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/Buffer.cc | 18 | ||||
-rw-r--r-- | libqpdf/Pl_Buffer.cc | 8 |
2 files changed, 19 insertions, 7 deletions
diff --git a/libqpdf/Buffer.cc b/libqpdf/Buffer.cc index 3dddd5db..20453a40 100644 --- a/libqpdf/Buffer.cc +++ b/libqpdf/Buffer.cc @@ -27,6 +27,14 @@ Buffer::Members::Members(size_t size, unsigned char* buf, bool own_memory) : } } +Buffer::Members::Members(std::string&& content) : + str(std::move(content)), + own_memory(false), + size(str.size()), + buf(reinterpret_cast<unsigned char*>(str.data())) +{ +} + Buffer::Members::~Members() { if (this->own_memory) { @@ -44,11 +52,21 @@ Buffer::Buffer(size_t size) : { } +Buffer::Buffer(std::string&& content) : + m(new Members(std::move(content))) +{ +} + Buffer::Buffer(unsigned char* buf, size_t size) : m(new Members(size, buf, false)) { } +Buffer::Buffer(std::string& content) : + m(new Members(content.size(), reinterpret_cast<unsigned char*>(content.data()), false)) +{ +} + Buffer::Buffer(Buffer const& rhs) { assert(test_mode); diff --git a/libqpdf/Pl_Buffer.cc b/libqpdf/Pl_Buffer.cc index 05d2ebdb..9994bedd 100644 --- a/libqpdf/Pl_Buffer.cc +++ b/libqpdf/Pl_Buffer.cc @@ -42,13 +42,7 @@ Pl_Buffer::getBuffer() if (!m->ready) { throw std::logic_error("Pl_Buffer::getBuffer() called when not ready"); } - - auto size = m->data.size(); - auto* b = new Buffer(size); - if (size > 0) { - unsigned char* p = b->getBuffer(); - memcpy(p, m->data.data(), size); - } + auto* b = new Buffer(std::move(m->data)); m->data.clear(); return b; } |