From owner-p4-projects@FreeBSD.ORG Tue Jan 8 20:44:16 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 37B3F16A421; Tue, 8 Jan 2008 20:44:16 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F12B016A41A for ; Tue, 8 Jan 2008 20:44:15 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CAE1813C468 for ; Tue, 8 Jan 2008 20:44:15 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m08KiFtj012971 for ; Tue, 8 Jan 2008 20:44:15 GMT (envelope-from jb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m08KiFAg012968 for perforce@freebsd.org; Tue, 8 Jan 2008 20:44:15 GMT (envelope-from jb@freebsd.org) Date: Tue, 8 Jan 2008 20:44:15 GMT Message-Id: <200801082044.m08KiFAg012968@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jb@freebsd.org using -f From: John Birrell To: Perforce Change Reviews Cc: Subject: PERFORCE change 132807 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Jan 2008 20:44:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=132807 Change 132807 by jb@jb_freebsd1 on 2008/01/08 20:44:11 Free memory when finished. Affected files ... .. //depot/projects/dtrace/src/lib/libdwarf/dwarf_finish.c#2 edit Differences ... ==== //depot/projects/dtrace/src/lib/libdwarf/dwarf_finish.c#2 (text+ko) ==== @@ -32,9 +32,17 @@ int dwarf_finish(Dwarf_Debug *dbgp, Dwarf_Error *error) { + Dwarf_Abbrev ab; + Dwarf_Abbrev tab; + Dwarf_Attribute at; + Dwarf_Attribute tat; + Dwarf_AttrValue av; + Dwarf_AttrValue tav; Dwarf_CU cu; Dwarf_CU tcu; Dwarf_Debug dbg; + Dwarf_Die die; + Dwarf_Die tdie; if (error == NULL) /* Can only return a generic error. */ @@ -50,6 +58,30 @@ /* Free entries in the compilation unit list. */ STAILQ_FOREACH_SAFE(cu, &dbg->dbg_cu, cu_next, tcu) { + /* Free entries in the die list */ + STAILQ_FOREACH_SAFE(die, &cu->cu_die, die_next, tdie) { + /* Free entries in the attribute value list */ + STAILQ_FOREACH_SAFE(av, &die->die_attrval, av_next, tav) { + STAILQ_REMOVE(&die->die_attrval, av, _Dwarf_AttrValue, av_next); + free(av); + } + + STAILQ_REMOVE(&cu->cu_die, die, _Dwarf_Die, die_next); + free(die); + } + + /* Free entries in the abbrev list */ + STAILQ_FOREACH_SAFE(ab, &cu->cu_abbrev, a_next, tab) { + /* Free entries in the attribute list */ + STAILQ_FOREACH_SAFE(at, &ab->a_attrib, at_next, tat) { + STAILQ_REMOVE(&ab->a_attrib, at, _Dwarf_Attribute, at_next); + free(at); + } + + STAILQ_REMOVE(&cu->cu_abbrev, ab, _Dwarf_Abbrev, a_next); + free(ab); + } + STAILQ_REMOVE(&dbg->dbg_cu, cu, _Dwarf_CU, cu_next); free(cu); }