aboutsummaryrefslogtreecommitdiffstats
path: root/taglib/toolkit/tfile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'taglib/toolkit/tfile.cpp')
-rw-r--r--taglib/toolkit/tfile.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/taglib/toolkit/tfile.cpp b/taglib/toolkit/tfile.cpp
index 30cc9fbc..d0a6116f 100644
--- a/taglib/toolkit/tfile.cpp
+++ b/taglib/toolkit/tfile.cpp
@@ -74,15 +74,17 @@ using namespace TagLib;
class File::FilePrivate
{
public:
- FilePrivate(IOStream *stream);
+ FilePrivate(IOStream *stream, bool owner);
IOStream *stream;
+ bool streamOwner;
bool valid;
static const uint bufferSize = 1024;
};
-File::FilePrivate::FilePrivate(IOStream *stream) :
+File::FilePrivate::FilePrivate(IOStream *stream, bool owner) :
stream(stream),
+ streamOwner(owner),
valid(true)
{
}
@@ -94,17 +96,17 @@ File::FilePrivate::FilePrivate(IOStream *stream) :
File::File(FileName fileName)
{
IOStream *stream = new FileStream(fileName);
- d = new FilePrivate(stream);
+ d = new FilePrivate(stream, true);
}
File::File(IOStream *stream)
{
- d = new FilePrivate(stream);
+ d = new FilePrivate(stream, false);
}
File::~File()
{
- if(d->stream)
+ if(d->stream && d->streamOwner)
delete d->stream;
delete d;
}