Author: metze
Date: 2006-07-15 13:28:52 +0000 (Sat, 15 Jul 2006)
New Revision: 17061

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17061

Log:
- remove the currect talloc chunk from it's parent before freeing the children
  this fixes an endless loop bug!
- reenable the test for this

should I merge this to samba3?

metze
Modified:
   branches/SAMBA_4_0/source/lib/talloc/talloc.c
   branches/SAMBA_4_0/source/lib/talloc/testsuite.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/talloc/talloc.c
===================================================================
--- branches/SAMBA_4_0/source/lib/talloc/talloc.c       2006-07-15 10:55:24 UTC 
(rev 17060)
+++ branches/SAMBA_4_0/source/lib/talloc/talloc.c       2006-07-15 13:28:52 UTC 
(rev 17061)
@@ -585,10 +585,6 @@
                tc->destructor = NULL;
        }
 
-       tc->flags |= TALLOC_FLAG_LOOP;
-
-       talloc_free_children(ptr);
-
        if (tc->parent) {
                _TLIST_REMOVE(tc->parent->child, tc);
                if (tc->parent->child) {
@@ -599,8 +595,10 @@
                if (tc->next) tc->next->prev = tc->prev;
        }
 
-       tc->flags |= TALLOC_FLAG_FREE;
+       tc->flags |= TALLOC_FLAG_LOOP;
+       talloc_free_children(ptr);
 
+       tc->flags |= TALLOC_FLAG_FREE;
        old_errno = errno;
        free(tc);
        errno = old_errno;

Modified: branches/SAMBA_4_0/source/lib/talloc/testsuite.c
===================================================================
--- branches/SAMBA_4_0/source/lib/talloc/testsuite.c    2006-07-15 10:55:24 UTC 
(rev 17060)
+++ branches/SAMBA_4_0/source/lib/talloc/testsuite.c    2006-07-15 13:28:52 UTC 
(rev 17061)
@@ -845,9 +845,8 @@
        talloc_report_full(top, stdout);
        talloc_free(top);
        talloc_free(child_owner);
-#if 0
        talloc_free(child);
-#endif
+
        return True;
 }
 

Reply via email to