From: Marcelo M. <mar...@us...> - 2005-12-04 01:17:06
|
Update of /cvsroot/swig/SWIG/Source/Swig In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12402/Source/Swig Modified Files: stype.c typemap.c typesys.c wrapfunc.c Log Message: more memory leaks fixes Index: stype.c =================================================================== RCS file: /cvsroot/swig/SWIG/Source/Swig/stype.c,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -d -r1.65 -r1.66 *** stype.c 30 Nov 2005 21:32:27 -0000 1.65 --- stype.c 4 Dec 2005 01:16:57 -0000 1.66 *************** *** 365,369 **** r = Getattr(default_cache,t); if (r) { - if (Strcmp(r,t) == 0) return 0; return Copy(r); } --- 365,368 ---- *************** *** 468,477 **** } if (r != t) Delete(r); - #ifdef SWIG_DEFAULT_CACHE - /* The cache produces strange results, see enum_template.i case */ - cdef = Copy(def); - Setattr(default_cache,t, cdef); - Delete(cdef); - #endif if (StringEqual(def,t)) { Delete(def); --- 467,470 ---- *************** *** 479,482 **** --- 472,484 ---- } + #ifdef SWIG_DEFAULT_CACHE + /* The cache produces strange results, see enum_template.i case */ + if (def) { + cdef = Copy(def); + Setattr(default_cache,t, cdef); + Delete(cdef); + } + #endif + /* Printf(stderr,"type : def %s : %s\n", t, def); */ Index: typemap.c =================================================================== RCS file: /cvsroot/swig/SWIG/Source/Swig/typemap.c,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** typemap.c 30 Nov 2005 21:32:27 -0000 1.54 --- typemap.c 4 Dec 2005 01:16:57 -0000 1.55 *************** *** 1112,1119 **** Printf(str,"%s%d",pn,argnum); } else { ! Printf(str,"%s",pn); } if (isglobal && Wrapper_check_local(f,str)) { p = nextSibling(p); continue; } --- 1112,1121 ---- Printf(str,"%s%d",pn,argnum); } else { ! StringAppend(str,pn); } if (isglobal && Wrapper_check_local(f,str)) { p = nextSibling(p); + Delete(str); + if (at) Delete(at); continue; } *************** *** 1135,1139 **** } p = nextSibling(p); ! Delete(at); } } --- 1137,1141 ---- } p = nextSibling(p); ! if (at) Delete(at); } } *************** *** 1157,1161 **** s = Getattr(tm,k_code); ! if (!s) return 0; /* Blocked */ --- 1159,1167 ---- s = Getattr(tm,k_code); ! if (!s) { ! if (mtype) Delete(mtype); ! return 0; ! } ! /* Blocked */ *************** *** 1343,1347 **** SwigType *rtype = SwigType_typedef_resolve_all(type); String *mangle = Swig_string_mangle(rtype); ! Printf(value,"%s",mangle); Delete(mangle); Delete(rtype); --- 1349,1353 ---- SwigType *rtype = SwigType_typedef_resolve_all(type); String *mangle = Swig_string_mangle(rtype); ! StringAppend(value,mangle); Delete(mangle); Delete(rtype); *************** *** 1679,1682 **** --- 1685,1690 ---- Setattr(vars,n,v); } + Delete(n); + Delete(v); } Index: wrapfunc.c =================================================================== RCS file: /cvsroot/swig/SWIG/Source/Swig/wrapfunc.c,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** wrapfunc.c 28 Nov 2005 17:32:56 -0000 1.29 --- wrapfunc.c 4 Dec 2005 01:16:57 -0000 1.30 *************** *** 84,88 **** ts = NewStringEmpty(); Seek(str,0, SEEK_SET); - Clear(ts); while ((c = Getc(str)) != EOF) { if (c == '\"') { --- 84,87 ---- *************** *** 223,228 **** tf = NewStringEmpty(); Seek(str,0, SEEK_SET); - Clear(ts); - Clear(tf); while ((c = Getc(str)) != EOF) { --- 222,225 ---- *************** *** 264,268 **** Putc(' ',tf); } ! Printf(tf,"%s",ts); Clear(ts); level+=indent; --- 261,265 ---- Putc(' ',tf); } ! Append(tf,ts); Clear(ts); level+=indent; *************** *** 287,291 **** Putc(' ',tf); } ! Printf(tf, "%s", ts); Putc(c, tf); Clear(ts); --- 284,288 ---- Putc(' ',tf); } ! Append(tf, ts); Putc(c, tf); Clear(ts); *************** *** 313,317 **** Putc(' ',tf); } ! Printf(tf,"%s",ts); Clear(ts); } --- 310,314 ---- Putc(' ',tf); } ! Append(tf,ts); Clear(ts); } *************** *** 357,363 **** } if (!empty) { ! Printf(tf,"\n"); } ! Printf(tf,"%s",ts); Printf(f, "%s", tf); Clear(tf); --- 354,360 ---- } if (!empty) { ! Append(tf,"\n"); } ! Append(tf,ts); Printf(f, "%s", tf); Clear(tf); *************** *** 374,378 **** } if (!empty) { ! Printf(tf,"%s",ts); } if (Len(tf) != 0) --- 371,375 ---- } if (!empty) { ! Append(tf,ts); } if (Len(tf) != 0) *************** *** 401,404 **** --- 398,403 ---- else Wrapper_pretty_print(str,f); + + Delete(str); } Index: typesys.c =================================================================== RCS file: /cvsroot/swig/SWIG/Source/Swig/typesys.c,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** typesys.c 1 Dec 2005 00:07:07 -0000 1.45 --- typesys.c 4 Dec 2005 01:16:57 -0000 1.46 *************** *** 293,296 **** --- 293,297 ---- inherits = NewList(); Setattr(current_scope,k_inherit, inherits); + Delete(inherits); } assert(scope != current_scope); *************** *** 339,342 **** --- 340,344 ---- ulist = NewList(); Setattr(current_scope,k_using, ulist); + Delete(ulist); } assert(scope != current_scope); *************** *** 1646,1649 **** --- 1648,1652 ---- h = NewHash(); Setattr(subclass,base,h); + Delete(h); } if (!Getattr(h,derived)) { *************** *** 1790,1793 **** --- 1793,1797 ---- } rk = Next(rk); + Delete(rlist); } } |