diff --git a/src/common/slurm_selecttype_info.c b/src/common/slurm_selecttype_info.c
index 0c3fcd530d445c13e8205a7feaa32c405f2acb6c..a79b4b53dcfc7ff44d56ceabb6d3b6e1336b4c4f 100644
--- a/src/common/slurm_selecttype_info.c
+++ b/src/common/slurm_selecttype_info.c
@@ -50,10 +50,10 @@ int parse_select_type_param(char *select_type_parameters,
 				   select_type_plugin_info_t *param)
 {
 	int rc = SLURM_SUCCESS;	
-	char *str_parameters;
+	char *str_parameters, *st_str = NULL;
 
 
-	char *st_str = xstrdup(select_type_parameters);
+	st_str = xstrdup(select_type_parameters);
 	if ((str_parameters = strtok(st_str,",")) != NULL) {
 		do {
 			if (strcasecmp(str_parameters, "CR_Socket") == 0) {
@@ -71,14 +71,15 @@ int parse_select_type_param(char *select_type_parameters,
 			} else if (strcasecmp(str_parameters, "CR_CPU_Memory") == 0) {
 				*param = CR_CPU_MEMORY;
 			} else {
-				error( "Bad SelectType Parameter: %s\n", str_parameters );
+				error("Bad SelectType Parameter: %s\n", 
+				      str_parameters );
 				rc = SLURM_ERROR;
-				xfree(str_parameters);
+				xfree(st_str);
 				return rc;
 			}
 		} while ((str_parameters = strtok(NULL,",")));
 	}
-	xfree(str_parameters);
+	xfree(st_str);
 	
 	return rc;
 }
diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 952f202208b1018ff03ab4e3c5031f70e84c15c0..815b9434baf033b70a58bd9f305965bb53ca7d62 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -224,6 +224,7 @@ void delete_job_details(struct job_record *job_entry)
 	xfree(job_entry->details->in);
 	xfree(job_entry->details->out);
 	xfree(job_entry->details->work_dir);
+	xfree(job_entry->details->mc_ptr);
 	xfree(job_entry->details);
 }
 
diff --git a/src/slurmctld/ping_nodes.c b/src/slurmctld/ping_nodes.c
index e498f6fd691acfddd7f7e8f728aac5d9d6a2815f..af18b3ee43ab694c0932b61a8a0c4819c470f4d4 100644
--- a/src/slurmctld/ping_nodes.c
+++ b/src/slurmctld/ping_nodes.c
@@ -237,9 +237,10 @@ void ping_nodes (void)
 		ping_agent_args->node_count++;
 	}
 
-	if (ping_agent_args->node_count == 0)
+	if (ping_agent_args->node_count == 0) {
+		hostlist_destroy(ping_agent_args->hostlist);
 		xfree (ping_agent_args);
-	else {
+	} else {
 		hostlist_uniq(ping_agent_args->hostlist);
 		hostlist_ranged_string(ping_agent_args->hostlist, 
 			sizeof(host_str), host_str);
@@ -248,9 +249,10 @@ void ping_nodes (void)
 		agent_queue_request(ping_agent_args);
 	}
 
-	if (reg_agent_args->node_count == 0)
+	if (reg_agent_args->node_count == 0) {
+		hostlist_destroy(reg_agent_args->hostlist);
 		xfree (reg_agent_args);
-	else {
+	} else {
 		hostlist_uniq(reg_agent_args->hostlist);
 		hostlist_ranged_string(reg_agent_args->hostlist, 
 			sizeof(host_str), host_str);