summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCongcong Kuo <[email protected]>2025-05-27 01:49:56 +0800
committerLudovic Courtès <[email protected]>2025-05-28 19:31:45 +0200
commit583e0688e33c4f3d7e3f1e2f30dd78690eb58fd4 (patch)
tree4540726ce9e891cce45887e2459de173436d6b62
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 <[email protected]>
-rw-r--r--nix/libutil/serialise.cc19
-rw-r--r--nix/libutil/util.cc7
-rw-r--r--nix/libutil/util.hh12
3 files changed, 12 insertions, 26 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);
diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc
index 56f116046c..398f61841f 100644
--- a/nix/libutil/util.cc
+++ b/nix/libutil/util.cc
@@ -271,11 +271,10 @@ string readFile(int fd)
if (fstat(fd, &st) == -1)
throw SysError("statting file");
- unsigned char * buf = new unsigned char[st.st_size];
- AutoDeleteArray<unsigned char> d(buf);
- readFull(fd, buf, st.st_size);
+ std::vector<unsigned char> buf(st.st_size);
+ readFull(fd, buf.data(), buf.size());
- return string((char *) buf, st.st_size);
+ return string((char *) buf.data(), buf.size());
}
diff --git a/nix/libutil/util.hh b/nix/libutil/util.hh
index 377aac0684..03234e3a5d 100644
--- a/nix/libutil/util.hh
+++ b/nix/libutil/util.hh
@@ -194,18 +194,6 @@ string drainFD(int fd);
/* Automatic cleanup of resources. */
-template <class T>
-struct AutoDeleteArray
-{
- T * p;
- AutoDeleteArray(T * p) : p(p) { }
- ~AutoDeleteArray()
- {
- delete [] p;
- }
-};
-
-
class AutoDelete
{
Path path;