use shared_ptr to avoid possible memory leaks and improve exception-safety
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user