From e93aba2bae8e76d1b1d2d9493742aa93c2b1b27b Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 8 Oct 2023 16:02:30 +0100 Subject: Use unique_ptr for handling unescaped bytea column buffer --- libpqpp/pq-column.cpp | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) (limited to 'libpqpp/pq-column.cpp') diff --git a/libpqpp/pq-column.cpp b/libpqpp/pq-column.cpp index cd0d60c..f78863c 100644 --- a/libpqpp/pq-column.cpp +++ b/libpqpp/pq-column.cpp @@ -9,22 +9,13 @@ #include #include #include -#include #include PQ::Column::Column(const SelectBase * s, unsigned int i) : - DB::Column(PQfname(s->execRes, static_cast(i)), i), sc(s), oid(PQftype(sc->execRes, static_cast(colNo))), - buf(nullptr) + DB::Column(PQfname(s->execRes, static_cast(i)), i), sc(s), oid(PQftype(sc->execRes, static_cast(colNo))) { } -PQ::Column::~Column() -{ - if (buf) { - PQfreemem(buf); - } -} - bool PQ::Column::isNull() const { @@ -97,12 +88,10 @@ PQ::Column::apply(DB::HandleField & h) const h.timestamp(boost::posix_time::time_from_string(value())); break; case BYTEAOID: { - if (buf) { - PQfreemem(buf); - } - size_t len; - buf = PQunescapeBytea(reinterpret_cast(value()), &len); - h.blob(DB::Blob(buf, len)); + size_t len = 0; + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) + buf = BufPtr {PQunescapeBytea(reinterpret_cast(value()), &len)}; + h.blob(DB::Blob(buf.get(), len)); break; } } -- cgit v1.2.3