From 21da4412029ecd1d32b684c21b5855db6ea6931a Mon Sep 17 00:00:00 2001
From: Lasse Tjernaes Wardenaer <lasse.tjernaes.wardenaer@cern.ch>
Date: Wed, 8 Feb 2023 14:10:49 +0100
Subject: [PATCH] Resolve "castor::tape::tapeserver::daemon::Payload not being
 deallocated in cta-readtp"

---
 ReleaseNotes.md                 | 1 +
 tapeserver/readtp/ReadtpCmd.cpp | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index 810f056b6c..c417c8538b 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -3,6 +3,7 @@
 ## Summary
 ### Features
 - cta/CTA#250 - Trim SQL query length in catalogue DB failure reason
+- cta/CTA#301 - Switch from new to unique pointer in CtaReadTp to fix memory leak
 ### Bug Fixes
 ### Continuous Integration
 
diff --git a/tapeserver/readtp/ReadtpCmd.cpp b/tapeserver/readtp/ReadtpCmd.cpp
index 3e44487102..2c713b8c1e 100644
--- a/tapeserver/readtp/ReadtpCmd.cpp
+++ b/tapeserver/readtp/ReadtpCmd.cpp
@@ -487,7 +487,7 @@ void ReadtpCmd::readTapeFile(
   const size_t buffer_size = 1 * 1024 * 1024 * 1024;  // 1Gb
   size_t read_data_size = 0;
   // allocate one gigabyte buffer
-  auto payload = new castor::tape::tapeserver::daemon::Payload(buffer_size);
+  auto payload = std::make_unique<castor::tape::tapeserver::daemon::Payload>(buffer_size);
   try {
     while (1) {
       if (payload->remainingFreeSpace() <= reader->getBlockSize()) {
-- 
GitLab