summaryrefslogtreecommitdiff
path: root/libpqpp/pq-column.h
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2023-10-08 16:02:30 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2023-10-08 16:02:30 +0100
commite93aba2bae8e76d1b1d2d9493742aa93c2b1b27b (patch)
treecd193a7d25128f8d7a6c8258991282081cabf087 /libpqpp/pq-column.h
parentAnonymous namespace over static (diff)
downloadlibdbpp-postgresql-e93aba2bae8e76d1b1d2d9493742aa93c2b1b27b.tar.bz2
libdbpp-postgresql-e93aba2bae8e76d1b1d2d9493742aa93c2b1b27b.tar.xz
libdbpp-postgresql-e93aba2bae8e76d1b1d2d9493742aa93c2b1b27b.zip
Use unique_ptr for handling unescaped bytea column buffer
Diffstat (limited to 'libpqpp/pq-column.h')
-rw-r--r--libpqpp/pq-column.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/libpqpp/pq-column.h b/libpqpp/pq-column.h
index f86958e..d3400bf 100644
--- a/libpqpp/pq-column.h
+++ b/libpqpp/pq-column.h
@@ -11,7 +11,6 @@ namespace PQ {
class Column : public DB::Column {
public:
Column(const SelectBase *, unsigned int field);
- ~Column() override;
[[nodiscard]] bool isNull() const override;
void apply(DB::HandleField &) const override;
@@ -31,8 +30,18 @@ namespace PQ {
const SelectBase * sc;
const Oid oid;
+
// Buffer for PQunescapeBytea
- mutable unsigned char * buf;
+ struct pq_deleter {
+ void
+ operator()(unsigned char * p)
+ {
+ PQfreemem(p);
+ }
+ };
+
+ using BufPtr = std::unique_ptr<unsigned char, pq_deleter>;
+ mutable BufPtr buf;
};
}