Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

orkaudio: Fix leak in ConfigManager #112

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from
4 changes: 2 additions & 2 deletions orkbasecxx/ConfigManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ void ConfigManager::Initialize()
}
}

XMLPlatformUtils::Initialize();
XMLPlatformUtils::Initialize();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add corresponding XMLPlatformUtils::Terminate() call.

While XMLPlatformUtils::Initialize() is now correctly active, there's no matching Terminate() call. This could lead to resource leaks.

Consider adding cleanup in the destructor:

ConfigManager::~ConfigManager() {
    if (m_parser) {
        delete m_parser;
        m_parser = nullptr;
    }
    XMLPlatformUtils::Terminate();
}


// By default, the DOM document generated by the parser will be free() by the parser.
// If we ever need to free the parser and the document separately, we need to do this:
Expand All @@ -110,7 +110,7 @@ void ConfigManager::Initialize()
// doc->release();
// ...
// delete parser;
XercesDOMParser *m_parser = new XercesDOMParser;
m_parser = new XercesDOMParser;
XmlErrorHandler errhandler;
m_parser->setErrorHandler(&errhandler);
m_parser->parse(cfgFilename);
Expand Down
Loading