more memory leaks...

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7908 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2005-12-01 00:36:28 +00:00
commit bc5b7bc559

View file

@ -1429,13 +1429,13 @@ Swig_symbol_type_qualify(const SwigType *t, Symtab *st) {
List *elements; List *elements;
String *result; String *result;
int i,len; int i,len;
Iterator pe;
result = NewStringEmpty(); result = NewStringEmpty();
elements = SwigType_split(t); elements = SwigType_split(t);
for (pe = First(elements); pe.item; pe = Next(pe)) { len = Len(elements);
String *e = pe.item; for (i = 0; i < len; i++) {
String *e = Getitem(elements,i);
if (SwigType_issimple(e)) { if (SwigType_issimple(e)) {
Node *n = Swig_symbol_clookup_check(e,st,no_constructor); Node *n = Swig_symbol_clookup_check(e,st,no_constructor);
if (n) { if (n) {
@ -1504,14 +1504,13 @@ Swig_symbol_type_qualify(const SwigType *t, Symtab *st) {
static static
SwigType *Swig_symbol_template_reduce(SwigType *qt, Symtab *ntab) SwigType *Swig_symbol_template_reduce(SwigType *qt, Symtab *ntab)
{ {
Iterator pi;
Parm *p; Parm *p;
List *parms = SwigType_parmlist(qt); List *parms = SwigType_parmlist(qt);
Iterator pi = First(parms);
String *tprefix = SwigType_templateprefix(qt); String *tprefix = SwigType_templateprefix(qt);
String *tsuffix = SwigType_templatesuffix(qt); String *tsuffix = SwigType_templatesuffix(qt);
String *qprefix = SwigType_typedef_qualified(tprefix); String *qprefix = SwigType_typedef_qualified(tprefix);
Printv(qprefix,"<(",NIL); StringAppend(qprefix,"<(");
pi = First(parms);
while ((p = pi.item)) { while ((p = pi.item)) {
String *np; String *np;
String *tp = Swig_symbol_typedef_reduce(p, ntab); String *tp = Swig_symbol_typedef_reduce(p, ntab);
@ -1520,6 +1519,7 @@ SwigType *Swig_symbol_template_reduce(SwigType *qt, Symtab *ntab)
if (n) { if (n) {
String *qual = Swig_symbol_qualified(n); String *qual = Swig_symbol_qualified(n);
np = Copy(HashGetAttr(n,k_name)); np = Copy(HashGetAttr(n,k_name));
Delete(tp);
tp = np; tp = np;
if (qual && StringLen(qual)) { if (qual && StringLen(qual)) {
Insert(np,0,k_coloncolon); Insert(np,0,k_coloncolon);
@ -1538,11 +1538,11 @@ SwigType *Swig_symbol_template_reduce(SwigType *qt, Symtab *ntab)
Delete(tp); Delete(tp);
} }
StringAppend(qprefix,")>"); StringAppend(qprefix,")>");
Insert(tsuffix, 0, qprefix); StringAppend(qprefix,tsuffix);
Delete(parms); Delete(parms);
Delete(tprefix); Delete(tprefix);
Delete(qprefix); Delete(tsuffix);
return tsuffix; return qprefix;
} }
@ -1750,13 +1750,14 @@ SwigType*
Swig_symbol_template_deftype(const SwigType *type, Symtab *tscope) { Swig_symbol_template_deftype(const SwigType *type, Symtab *tscope) {
String *result = NewStringEmpty(); String *result = NewStringEmpty();
List *elements = SwigType_split(type); List *elements = SwigType_split(type);
Iterator pe; int len = Len(elements);
int i;
#ifdef SWIG_DEBUG #ifdef SWIG_DEBUG
Printf(stderr,"finding deftype %s\n", type); Printf(stderr,"finding deftype %s\n", type);
#endif #endif
for (pe = First(elements); pe.item; pe = Next(pe)) { for (i = 0; i < len; i++) {
String *e = pe.item; String *e = Getitem(elements,i);
if (SwigType_isfunction(e)) { if (SwigType_isfunction(e)) {
String *s = NewString("f("); String *s = NewString("f(");
List *parms = SwigType_parmlist(e); List *parms = SwigType_parmlist(e);