fix many/many memory leaks

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7904 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2005-11-30 21:32:27 +00:00
commit 645f95d633
23 changed files with 627 additions and 251 deletions

View file

@ -131,7 +131,7 @@ class TypePass : private Dispatcher {
if (first == cls) return; /* The Marcelo check */
if (!cls) cls = first;
List *alist = 0;
List *ilist = Getattr(cls,bases);
if (!ilist) {
List *nlist = Getattr(cls,baselist);
@ -184,7 +184,7 @@ class TypePass : private Dispatcher {
bcls = 0;
} else {
if (Getattr(bcls,"typepass:visit")) {
if (!ilist) ilist = NewList();
if (!ilist) ilist = alist = NewList();
Append(ilist,bcls);
} else {
Swig_warning(WARN_TYPE_UNDEFINED_CLASS,Getfile(cls),Getline(cls),"Base class '%s' undefined.\n", bname);
@ -214,6 +214,8 @@ class TypePass : private Dispatcher {
Setattr(cls,bases,ilist);
}
}
if (alist) Delete(alist);
if (!ilist) return;
int len = Len(ilist);
int i;
@ -269,9 +271,8 @@ class TypePass : private Dispatcher {
append_list(allbases,Getattr(cls,"privatebases"));
if (Len(allbases)) {
Setattr(cls,"allbases",allbases);
} else {
Delete(allbases);
}
Delete(allbases);
}
/* ------------------------------------------------------------