use shared_ptr to avoid possible memory leaks and improve exception-safety

This commit is contained in:
wmayer
2019-09-03 17:15:24 +02:00
parent c4b0073022
commit 10cd535ceb
3 changed files with 11 additions and 14 deletions

View File

@@ -335,8 +335,8 @@ void Base::XMLReader::readFiles(zipios::ZipInputStream &zipstream) const
try {
Base::Reader reader(zipstream, jt->FileName, FileVersion);
jt->Object->RestoreDocFile(reader);
if ( reader.getLocalReader() != nullptr )
reader.getLocalReader()->readFiles(zipstream);
if (reader.getLocalReader())
reader.getLocalReader()->readFiles(zipstream);
}
catch(...) {
// For any exception we just continue with the next file.
@@ -565,8 +565,6 @@ Base::Reader::Reader(std::istream& str, const std::string& name, int version)
Base::Reader::~Reader()
{
if ( this->localreader != nullptr )
delete this->localreader;
}
std::string Base::Reader::getFileName() const
@@ -584,13 +582,12 @@ std::istream& Base::Reader::getStream()
return this->_str;
}
void Base::Reader::initLocalReader(Base::XMLReader *ptr)
void Base::Reader::initLocalReader(std::shared_ptr<Base::XMLReader> reader)
{
this->localreader=ptr;
this->localreader = reader;
}
Base::XMLReader *Base::Reader::getLocalReader()
std::shared_ptr<Base::XMLReader> Base::Reader::getLocalReader() const
{
return(this->localreader);
return(this->localreader);
}