summaryrefslogtreecommitdiff
path: root/nix/libutil/serialise.cc
diff options
context:
space:
mode:
authorCongcong Kuo <congcong.kuo@gmail.com>2025-05-27 01:49:56 +0800
committerLudovic Courtès <ludo@gnu.org>2025-05-28 19:31:45 +0200
commit583e0688e33c4f3d7e3f1e2f30dd78690eb58fd4 (patch)
tree4540726ce9e891cce45887e2459de173436d6b62 /nix/libutil/serialise.cc
parentc29534228ff9ac74e8c6a0e80356c21adbff9887 (diff)
daemon: Remove ‘AutoDeleteArray’.
* libutil/util.hh (AutoDeleteArray): Remove. * libutil/util.cc (readString, readStrings): Use ‘std::vector’ instead of ‘AutoDeleteArray’. * libutil/serialise.cc (readFile): Likewise. Change-Id: I45362998dbb8226874f66b77cd19f071f7bb2ab3 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'nix/libutil/serialise.cc')
-rw-r--r--nix/libutil/serialise.cc19
1 files changed, 9 insertions, 10 deletions
diff --git a/nix/libutil/serialise.cc b/nix/libutil/serialise.cc
index 9241750750..6f04ab1591 100644
--- a/nix/libutil/serialise.cc
+++ b/nix/libutil/serialise.cc
@@ -16,11 +16,11 @@ BufferedSink::~BufferedSink()
delete[] buffer;
}
-
+
void BufferedSink::operator () (const unsigned char * data, size_t len)
{
if (!buffer) buffer = new unsigned char[bufSize];
-
+
while (len) {
/* Optimisation: bypass the buffer if the data exceeds the
buffer size. */
@@ -96,7 +96,7 @@ size_t BufferedSource::read(unsigned char * data, size_t len)
if (!buffer) buffer = new unsigned char[bufSize];
if (!bufPosIn) bufPosIn = readUnbuffered(buffer, bufSize);
-
+
/* Copy out the data in the buffer. */
size_t n = len > bufPosIn - bufPosOut ? bufPosIn - bufPosOut : len;
memcpy(data, buffer + bufPosOut, n);
@@ -247,18 +247,17 @@ size_t readString(unsigned char * buf, size_t max, Source & source)
return len;
}
-
+
string readString(Source & source)
{
size_t len = readInt(source);
- unsigned char * buf = new unsigned char[len];
- AutoDeleteArray<unsigned char> d(buf);
- source(buf, len);
- readPadding(len, source);
- return string((char *) buf, len);
+ std::vector<unsigned char> buf(len);
+ source(buf.data(), buf.size());
+ readPadding(buf.size(), source);
+ return string((char *) buf.data(), buf.size());
}
-
+
template<class T> T readStrings(Source & source)
{
unsigned int count = readInt(source);