Skip to content

Commit c64c2e4

Browse files
authored
Merge pull request #139 from achim-k/toolchain-2.9
rtt_ros: Fix memory leak when parsing package xml file.
2 parents a7a4fc9 + e45c1f0 commit c64c2e4

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

rtt_ros/src/rtt_ros.cpp

+5-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ bool rtt_ros::import(const std::string& package)
6262
dep_names.push(package);
6363
deps_to_import.push_back(package);
6464

65-
const xmlChar * rtt_plugin_depend_xpath = xmlCharStrdup("/package/export/rtt_ros/plugin_depend/text()");
65+
xmlChar * rtt_plugin_depend_xpath = xmlCharStrdup("/package/export/rtt_ros/plugin_depend/text()");
6666

6767
while(!dep_names.empty())
6868
{
@@ -126,7 +126,9 @@ bool rtt_ros::import(const std::string& package)
126126
for(int i=0; i < xpath_obj->nodesetval->nodeNr; i++) {
127127
if(xpath_obj->nodesetval->nodeTab[i]) {
128128
std::ostringstream oss;
129-
oss << xmlNodeGetContent(xpath_obj->nodesetval->nodeTab[i]);
129+
xmlChar * dep_str = xmlNodeGetContent(xpath_obj->nodesetval->nodeTab[i]);
130+
oss << dep_str;
131+
xmlFree(dep_str);
130132
RTT::log(RTT::Debug) << "Found dependency \""<< oss.str() << "\"" <<RTT::endlog();
131133
dep_names.push(oss.str());
132134

@@ -141,6 +143,7 @@ bool rtt_ros::import(const std::string& package)
141143
xmlFreeDoc(package_doc);
142144
xmlCleanupParser();
143145
}
146+
xmlFree(rtt_plugin_depend_xpath);
144147

145148
// Build path list by prepending paths from search_paths list to the RTT component path in reverse order without duplicates
146149
std::set<std::string> search_paths_seen;

0 commit comments

Comments
 (0)