diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2015-09-12 21:57:57 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2015-09-13 10:02:42 (GMT) |
commit | d14bcd1f8f5bd4a2034bae842000630f4e098eb6 (patch) | |
tree | 31881747a1dd53684a95036c2921a6fe2ab8b25c /src/context.cpp | |
parent | 76a9892b190efaeb3c764d824bd285ff3d2c57dc (diff) | |
download | Doxygen-d14bcd1f8f5bd4a2034bae842000630f4e098eb6.zip Doxygen-d14bcd1f8f5bd4a2034bae842000630f4e098eb6.tar.gz Doxygen-d14bcd1f8f5bd4a2034bae842000630f4e098eb6.tar.bz2 |
Fixed a number of memory leaks in the template engine
Diffstat (limited to 'src/context.cpp')
-rw-r--r-- | src/context.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/context.cpp b/src/context.cpp index d32f6ea..e696981 100644 --- a/src/context.cpp +++ b/src/context.cpp @@ -3845,6 +3845,7 @@ TemplateVariant createLinkedText(Definition *def,const QCString &relPath,const Q if (tg) { linkifyText(*tg,def->getOuterScope(),def->getBodyDef(),def,text); + delete tg; return TemplateVariant(s.data(),TRUE); } else @@ -10201,6 +10202,28 @@ void generateOutputViaTemplate() } } + // clear all cached data in Definition objects. + QDictIterator<DefinitionIntf> di(*Doxygen::symbolMap); + DefinitionIntf *intf; + for (;(intf=di.current());++di) + { + if (intf->definitionType()==DefinitionIntf::TypeSymbolList) // list of symbols + { + DefinitionListIterator dli(*(DefinitionList*)intf); + Definition *d; + // for each symbol + for (dli.toFirst();(d=dli.current());++dli) + { + d->setCookie(0); + } + } + else // single symbol + { + Definition *d = (Definition *)intf; + d->setCookie(0); + } + } + e.destroyContext(ctx); } } |