From: mdw Date: Wed, 20 Aug 1997 16:19:11 +0000 (+0000) Subject: Patch memory leak. Replace `name_reinit' by `name_end' for more sensible X-Git-Tag: 1.3.3~116 X-Git-Url: https://git.distorted.org.uk/~mdw/become/commitdiff_plain/8e3b89aebcd6d838c7fe0230e355fe133b5b5e12 Patch memory leak. Replace `name_reinit' by `name_end' for more sensible restart. Don't try to trace when tracing's turned off. --- diff --git a/src/netg.c b/src/netg.c index 87afce0..79bfa02 100644 --- a/src/netg.c +++ b/src/netg.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: netg.c,v 1.1 1997/08/07 09:45:00 mdw Exp $ + * $Id: netg.c,v 1.2 1997/08/20 16:19:11 mdw Exp $ * * A local database of netgroups * @@ -29,6 +29,10 @@ /*----- Revision history --------------------------------------------------* * * $Log: netg.c,v $ + * Revision 1.2 1997/08/20 16:19:11 mdw + * Patch memory leak. Replace `name_reinit' by `name_end' for more sensible + * restart. Don't try to trace when tracing's turned off. + * * Revision 1.1 1997/08/07 09:45:00 mdw * New source file added to maintain a netgroups database. * @@ -338,6 +342,8 @@ static int netg__foreach(int st, char *k, int ksz, goto duff_restart; } + free(c->car.atom); + free(c); free(kc); free(vc); return (0); @@ -402,21 +408,23 @@ static void netg__dumpGroup(netg__cons *c, int lev) * Use: Dumps the netgroups table. */ +#ifdef TRACING + static void netg__dump(void) { sym_iter i; netg__sym *sng; -#ifdef TRACING trace(TRACE_DEBUG, "debug: dumping netgroups file"); for (sym_createIter(&i, &netg__table); (sng = sym_next(&i)) != 0; ) { trace(TRACE_DEBUG, "debug: netgroup `%s'...", sng->_base.name); sng->cons->f &= ~f_visit; netg__dumpGroup(sng->cons, 1); } -#endif } +#endif + /* --- @netg_iterate@, @netg_iterate_r@ --- * * * Arguments: @netg_iter *i@ = pointer to a netgroup iterator object @@ -617,16 +625,16 @@ void netg_init(void) IF_TRACING(TRACE_DEBUG, netg__dump(); ) } -/* --- @netg_reinit@ --- * +/* --- @netg_end@ --- * * * Arguments: --- * * Returns: --- * - * Use: Forces a re-read of the netgroups file. + * Use: Empties the netgroups database. */ -void netg_reinit(void) +void netg_end(void) { sym_iter i; netg__sym *sng; @@ -643,6 +651,7 @@ void netg_reinit(void) if (c->car.atom->h) free(c->car.atom->h); if (c->car.atom->u) free(c->car.atom->u); if (c->car.atom->d) free(c->car.atom->d); + free(c->car.atom); } free(c); c = cc; @@ -650,9 +659,7 @@ void netg_reinit(void) sym_remove(&netg__table, sng); } - /* --- Now rebuild the world --- */ - - netg_init(); + sym_destroyTable(&netg__table); } /*----- Test driver -------------------------------------------------------*/