mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
InsetIndex: add a missing destructor for IndexNode and call it from xhtml() to avoid leaking resources.
Corresponding Coverity finding: ** CID 382778: Resource leaks (RESOURCE_LEAK) /home/lasgoutt/src/lyx/coverity/lyx/src/insets/InsetIndex.cpp: 1909 in _ZNK3lyx15InsetPrintIndex5xhtmlB5cxx11ERNS_9XMLStreamERKNS_12OutputParamsE() ________________________________________________________________________________________________________ *** CID 382778: Resource leaks (RESOURCE_LEAK) /home/lasgoutt/src/lyx/coverity/lyx/src/insets/InsetIndex.cpp: 1909 in _ZNK3lyx15InsetPrintIndex5xhtmlB5cxx11ERNS_9XMLStreamERKNS_12OutputParamsE() 1903 } 1904 1905 xs << xml::EndTag("ul"); 1906 xs << xml::CR(); 1907 xs << xml::EndTag("div"); 1908 >>> CID 382778: Resource leaks (RESOURCE_LEAK) >>> Variable "index_root" going out of scope leaks the storage it points to. 1909 return ods.str(); 1910 } 1911
This commit is contained in:
parent
a71126904f
commit
6e4cf808da
@ -1658,6 +1658,14 @@ std::string generateCssClassAtDepth(unsigned depth) {
|
||||
struct IndexNode {
|
||||
std::vector<IndexEntry> entries;
|
||||
std::vector<IndexNode*> children;
|
||||
|
||||
~IndexNode() {
|
||||
for (IndexNode * child : children) {
|
||||
if (!child)
|
||||
continue;
|
||||
delete child;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
docstring termAtLevel(const IndexNode* node, unsigned depth)
|
||||
@ -1901,6 +1909,7 @@ docstring InsetPrintIndex::xhtml(XMLStream &, OutputParams const & op) const
|
||||
for (const IndexNode* node : index_root->children) {
|
||||
outputIndexPage(xs, node);
|
||||
}
|
||||
delete index_root;
|
||||
|
||||
xs << xml::EndTag("ul");
|
||||
xs << xml::CR();
|
||||
|
Loading…
Reference in New Issue
Block a user