summaryrefslogtreecommitdiffstats
path: root/src/context.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2015-09-12 21:57:57 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2015-09-13 10:02:42 (GMT)
commitd14bcd1f8f5bd4a2034bae842000630f4e098eb6 (patch)
tree31881747a1dd53684a95036c2921a6fe2ab8b25c /src/context.cpp
parent76a9892b190efaeb3c764d824bd285ff3d2c57dc (diff)
downloadDoxygen-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.cpp23
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);
}
}