From 45ee18e206bea7bf6ea45da892211ec89e4f1b1d Mon Sep 17 00:00:00 2001 From: Tsuda Kageyu Date: Wed, 8 Feb 2017 17:45:46 +0900 Subject: [PATCH] FilePrivate is responsible to delete a stream pointer instead of File. Generally, TagLib leaves the Private classes to delete their members. --- taglib/toolkit/tfile.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/taglib/toolkit/tfile.cpp b/taglib/toolkit/tfile.cpp index 897400b8..aff1684d 100644 --- a/taglib/toolkit/tfile.cpp +++ b/taglib/toolkit/tfile.cpp @@ -69,20 +69,22 @@ using namespace TagLib; class File::FilePrivate { public: - FilePrivate(IOStream *stream, bool owner); + FilePrivate(IOStream *stream, bool owner) : + stream(stream), + streamOwner(owner), + valid(true) {} + + ~FilePrivate() + { + if(streamOwner) + delete stream; + } IOStream *stream; bool streamOwner; bool valid; }; -File::FilePrivate::FilePrivate(IOStream *stream, bool owner) : - stream(stream), - streamOwner(owner), - valid(true) -{ -} - //////////////////////////////////////////////////////////////////////////////// // public members //////////////////////////////////////////////////////////////////////////////// @@ -99,8 +101,6 @@ File::File(IOStream *stream) : File::~File() { - if(d->stream && d->streamOwner) - delete d->stream; delete d; } -- 2.50.1