From 71ddc0a5730930d02dc1206a5edde34270e93241 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@schedmd.com>
Date: Wed, 20 Jul 2016 12:55:20 -0700
Subject: [PATCH] Continuation of commit 65b4f283e

---
 src/slurmctld/step_mgr.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/slurmctld/step_mgr.c b/src/slurmctld/step_mgr.c
index 3112a71c0a6..6ce90a58140 100644
--- a/src/slurmctld/step_mgr.c
+++ b/src/slurmctld/step_mgr.c
@@ -310,8 +310,10 @@ static void _free_step_rec(struct step_record *step_ptr)
  * and not upon record purging. Presently both events occur
  * simultaneously. */
 	if (step_ptr->switch_job) {
-		switch_g_job_step_complete(step_ptr->switch_job,
-					   step_ptr->step_layout->node_list);
+		if (step_ptr->step_layout)
+			switch_g_job_step_complete(
+				step_ptr->switch_job,
+				step_ptr->step_layout->node_list);
 		switch_g_free_jobinfo (step_ptr->switch_job);
 	}
 	resv_port_free(step_ptr);
@@ -4026,7 +4028,10 @@ extern int load_step_state(struct job_record *job_ptr, Buf buffer,
 	slurm_step_layout_destroy(step_ptr->step_layout);
 	step_ptr->step_layout  = step_layout;
 
-	step_ptr->switch_job   = switch_tmp;
+	if ((step_ptr->step_id == SLURM_EXTERN_CONT) && switch_tmp)
+		switch_g_free_jobinfo(switch_tmp);
+	else
+		step_ptr->switch_job   = switch_tmp;
 
 	xfree(step_ptr->tres_alloc_str);
 	step_ptr->tres_alloc_str     = tres_alloc_str;
-- 
GitLab