Patch memory leak. Rename `userdb_reinit' to `userdb_end' for more
authormdw <mdw>
Wed, 20 Aug 1997 16:24:58 +0000 (16:24 +0000)
committermdw <mdw>
Wed, 20 Aug 1997 16:24:58 +0000 (16:24 +0000)
sensible restart.

src/userdb.c

index a03dc89..db5e44b 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: userdb.c,v 1.3 1997/08/07 09:44:29 mdw Exp $
+ * $Id: userdb.c,v 1.4 1997/08/20 16:24:58 mdw Exp $
  *
  * User database management
  *
 /*----- Revision history --------------------------------------------------*
  *
  * $Log: userdb.c,v $
+ * Revision 1.4  1997/08/20 16:24:58  mdw
+ * Patch memory leak.  Rename `userdb_reinit' to `userdb_end' for more
+ * sensible restart.
+ *
  * Revision 1.3  1997/08/07 09:44:29  mdw
  * Read NIS-based passwords from the YP server directly, rather than using
  * `popen(ypcat)', which is probably both slower and less secure.
@@ -619,7 +623,8 @@ static int userdb__foreachUser(int st, char *k, int ksz,
   if (pw && !userdb__byName(&userdb__users, pw->pw_name)) {
     IF_TRACING(TRACE_DEBUG, userdb__dumpUser(pw); )
     userdb__addToMap(&userdb__users, pw->pw_name, pw->pw_uid, pw);
-  }
+  } else
+    userdb_freeUser(pw);
   free(cv);
   return (0);
 }
@@ -654,7 +659,8 @@ static int userdb__foreachGroup(int st, char *k, int ksz,
   if (gr && !userdb__byName(&userdb__groups, gr->gr_name)) {
     IF_TRACING(TRACE_DEBUG, userdb__dumpGroup(gr); )
     userdb__addToMap(&userdb__groups, gr->gr_name, gr->gr_gid, gr);
-  }
+  } else
+    userdb_freeGroup(gr);
   free(cv);
   return (0);
 }
@@ -764,20 +770,19 @@ void userdb_init(void)
   userdb__createMap(&userdb__groups);
 }
 
-/* --- @userdb_reinit@ --- *
+/* --- @userdb_end@ --- *
  *
  * Arguments:  ---
  *
  * Returns:    ---
  *
- * Use:                Reinitialises the user database.
+ * Use:                Closes down the user database.
  */
 
-void userdb_reinit(void)
+void userdb_end(void)
 {
   userdb__clearMap(&userdb__users, userdb_freeUser);
   userdb__clearMap(&userdb__groups, userdb_freeGroup);
-  userdb_init();
 }
 
 /*----- Test rig ----------------------------------------------------------*/
@@ -804,13 +809,22 @@ void dumpit(const char *msg)
 int main(void)
 {
   ego("userdb-test");
-  traceon(stderr, TRACE_ALL);
+/*   traceon(stdout, TRACE_ALL); */
   userdb_init();
-  dumpit("cleared");
-  userdb_yp();
-  dumpit("yp");
   userdb_local();
-  dumpit("local");
+  userdb_yp();
+  printf("loaded (%lu)\n", track_memused());
+  getchar();
+  for (;;) {
+    userdb_end();
+    printf("cleared (%lu)\n", track_memused());
+/*    track_memlist(); */
+    userdb_init();
+    userdb_local();
+    userdb_yp();
+    printf("reloaded (%lu)\n", track_memused());
+    getchar();
+  }
   return (0);
 }