mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-03-23 19:20:56 +00:00
Avoid possible memory leak by using the unique_ptr
This commit is contained in:
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…
x
Reference in New Issue
Block a user