Avoid possible memory leak by using the unique_ptr

pull/541/head
Andrei Kortunov 6 years ago
parent a262e4b342
commit aca6625af4

@ -103,21 +103,16 @@ namespace Files
};
ConstrainedFileStream::ConstrainedFileStream(const char *filename, size_t start, size_t length)
: std::istream(new ConstrainedFileStreamBuf(filename, start, length))
ConstrainedFileStream::ConstrainedFileStream(std::unique_ptr<std::streambuf> buf)
: std::istream(buf.get())
, mBuf(std::move(buf))
{
}
ConstrainedFileStream::~ConstrainedFileStream()
{
delete rdbuf();
}
IStreamPtr openConstrainedFileStream(const char *filename,
size_t start, size_t length)
{
return IStreamPtr(new ConstrainedFileStream(filename, start, length));
auto buf = std::unique_ptr<std::streambuf>(new ConstrainedFileStreamBuf(filename, start, length));
return IStreamPtr(new ConstrainedFileStream(std::move(buf)));
}
}

@ -11,9 +11,11 @@ namespace Files
class ConstrainedFileStream : public std::istream
{
public:
ConstrainedFileStream(const char *filename,
size_t start=0, size_t length=0xFFFFFFFF);
virtual ~ConstrainedFileStream();
ConstrainedFileStream(std::unique_ptr<std::streambuf> buf);
virtual ~ConstrainedFileStream() {};
private:
std::unique_ptr<std::streambuf> mBuf;
};
typedef std::shared_ptr<std::istream> IStreamPtr;

Loading…
Cancel
Save