From d365d95c7f9085699c2f4147bc0601959bde7e7a Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Mon, 14 Jul 2003 23:00:03 +0000
Subject: [PATCH] Optimize some memory management and eliminate a couple of
 memory leaks (at shutdown only).

---
 src/slurmctld/controller.c     | 8 +++++++-
 src/slurmctld/node_mgr.c       | 4 ++--
 src/slurmctld/node_scheduler.c | 4 ----
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index 65b23b72eee..3f70a1d6271 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -313,6 +313,12 @@ int main(int argc, char *argv[])
 			break;
 	}
 
+	/* NOTE: We don't wait for the agent to complete or clear
+	 * free data structures by default */
+#if	MEM_LEAK_TEST
+	log_fini();
+	xfree(slurmctld_conf.slurm_conf);
+#endif
 	return SLURM_SUCCESS;
 }
 
@@ -615,7 +621,7 @@ static void *_slurmctld_background(void *no_data)
 
 #if	MEM_LEAK_TEST
 	/* This should purge all allocated memory,      *\
-	   \*   Anything left over represents a leak.   */
+	\*   Anything left over represents a leak.   */
 	if (job_list)
 		list_destroy(job_list);
 
diff --git a/src/slurmctld/node_mgr.c b/src/slurmctld/node_mgr.c
index 84cfe1aaed5..b54fbae47eb 100644
--- a/src/slurmctld/node_mgr.c
+++ b/src/slurmctld/node_mgr.c
@@ -821,8 +821,8 @@ void rehash_node (void)
 {
 	int i, inx;
 
-	xrealloc (hash_table, (sizeof (int) * node_record_count));
-	memset (hash_table, 0, (sizeof (int) * node_record_count));
+	xfree (hash_table);
+	hash_table = xmalloc (sizeof (int) * node_record_count);
 
 	for (i = 0; i < node_record_count; i++) {
 		if (strlen (node_record_table_ptr[i].name) == 0)
diff --git a/src/slurmctld/node_scheduler.c b/src/slurmctld/node_scheduler.c
index 014d4acfca0..517dacbb50a 100644
--- a/src/slurmctld/node_scheduler.c
+++ b/src/slurmctld/node_scheduler.c
@@ -1042,10 +1042,6 @@ void build_node_details(struct job_record *job_ptr)
 		job_ptr->node_cnt = node_inx;
 	}
 	job_ptr->num_cpu_groups = cpu_inx + 1;
-	xrealloc(job_ptr->cpus_per_node,
-		 sizeof(uint32_t *) * job_ptr->num_cpu_groups);
-	xrealloc(job_ptr->cpu_count_reps,
-		 sizeof(uint32_t *) * job_ptr->num_cpu_groups);
 }
 
 /*
-- 
GitLab