AutoDeleteArray -> std::unique_ptr
Also, switch to C++14 for std::make_unique.
This commit is contained in:
parent
40dfac968a
commit
2b9d0a99cb
2
Makefile
2
Makefile
|
@ -27,7 +27,7 @@ makefiles = \
|
|||
tests/local.mk
|
||||
#src/download-via-ssh/local.mk \
|
||||
|
||||
GLOBAL_CXXFLAGS += -std=c++11 -g -Wall
|
||||
GLOBAL_CXXFLAGS += -std=c++14 -g -Wall
|
||||
|
||||
-include Makefile.config
|
||||
|
||||
|
|
|
@ -599,9 +599,8 @@ void RemoteStore::Connection::processStderr(Sink * sink, Source * source)
|
|||
else if (msg == STDERR_READ) {
|
||||
if (!source) throw Error("no source");
|
||||
size_t len = readInt(from);
|
||||
unsigned char * buf = new unsigned char[len];
|
||||
AutoDeleteArray<unsigned char> d(buf);
|
||||
writeString(buf, source->read(buf, len), to);
|
||||
auto buf = std::make_unique<unsigned char[]>(len);
|
||||
writeString(buf.get(), source->read(buf.get(), len), to);
|
||||
to.flush();
|
||||
}
|
||||
else
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <cstring>
|
||||
#include <cerrno>
|
||||
#include <memory>
|
||||
|
||||
|
||||
namespace nix {
|
||||
|
@ -236,11 +237,10 @@ size_t readString(unsigned char * buf, size_t max, Source & source)
|
|||
string readString(Source & source)
|
||||
{
|
||||
size_t len = readInt(source);
|
||||
unsigned char * buf = new unsigned char[len];
|
||||
AutoDeleteArray<unsigned char> d(buf);
|
||||
source(buf, len);
|
||||
auto buf = std::make_unique<unsigned char[]>(len);
|
||||
source(buf.get(), len);
|
||||
readPadding(len, source);
|
||||
return string((char *) buf, len);
|
||||
return string((char *) buf.get(), len);
|
||||
}
|
||||
|
||||
Source & operator >> (Source & in, string & s)
|
||||
|
|
|
@ -272,11 +272,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);
|
||||
auto buf = std::make_unique<unsigned char[]>(st.st_size);
|
||||
readFull(fd, buf.get(), st.st_size);
|
||||
|
||||
return string((char *) buf, st.st_size);
|
||||
return string((char *) buf.get(), st.st_size);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -139,18 +139,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;
|
||||
|
|
Loading…
Reference in a new issue