diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c
index a5aa61923121419f5c3eda29d26984a5090ec485..650d4cb67dbcda120e98b7b802ac744bad826d48 100644
--- a/src/common/slurm_protocol_pack.c
+++ b/src/common/slurm_protocol_pack.c
@@ -4964,31 +4964,29 @@ _unpack_layout_info_msg(layout_info_msg_t ** msg, Buf buffer,
 {
 	int i;
 	char **records;
-	uint32_t utmp32;
+	uint32_t utmp32, record_count = 0;
 	char *tmp_str = NULL;
 
 	xassert(msg != NULL);
 
 	if (protocol_version >= SLURM_MIN_PROTOCOL_VERSION) {
 		*msg = xmalloc(sizeof(layout_info_msg_t));
-		safe_unpack32(&(*msg)->record_count, buffer);
-		(*msg)->records = xmalloc(sizeof(char*) * (*msg)->record_count);
+		(*msg)->record_count = 0;
+		safe_unpack32(&record_count, buffer);
+		(*msg)->records = xmalloc(sizeof(char*) * record_count);
 		records = (*msg)->records;
-
-		i = 0;
-		while (remaining_buf(buffer) > 0) {
+		for (i = 0; i < record_count; i++) {
 			safe_unpackstr_xmalloc(&tmp_str, &utmp32, buffer);
 			if (tmp_str != NULL) {
 				if (tmp_str[0] == '\0') {
 					xfree(tmp_str);
-					break;
+				} else {
+					records[(*msg)->record_count] = tmp_str;
+					// tmp_str = NULL; /* Nothing to free */
+					((*msg)->record_count)++;
 				}
-				records[i++] = tmp_str;
-				// tmp_str = NULL; /* Nothing left to free */
-				continue;
 			}
 		}
-		(*msg)->record_count = i;
 	} else {
 		error("%s: protocol_version %hu not supported",
 		      __func__, protocol_version);
diff --git a/src/slurmctld/proc_req.c b/src/slurmctld/proc_req.c
index 7c596524cd319c39d4f79e9bae2eb8f615008dcb..20ebb68855fb449b91748c7a6efdf2116f1221a5 100644
--- a/src/slurmctld/proc_req.c
+++ b/src/slurmctld/proc_req.c
@@ -3944,7 +3944,6 @@ static void _slurm_rpc_layout_show(slurm_msg_t * msg)
 	int dump_size;
 	static int high_buffer_size = (1024 * 1024);
 	Buf buffer = init_buf(high_buffer_size);
-	int flag = 1;
 
 	START_TIMER;
 	debug2("Processing RPC: REQUEST_LAYOUT_INFO");
@@ -3962,28 +3961,28 @@ static void _slurm_rpc_layout_show(slurm_msg_t * msg)
 			debug2("%s: unable to get layout[%s]",
 			       __func__, layout_req_msg->layout_type);
 			slurm_send_rc_msg(msg, SLURM_NO_CHANGE_IN_DATA);
-			flag = 0;
+			free_buf(buffer);
+			return;
 		}
 	}
-	if ( flag == 1 ) {
-		dump_size = get_buf_offset(buffer);
-		high_buffer_size = MAX(high_buffer_size, dump_size);
-		dump = xfer_buf_data(buffer);
-		END_TIMER2("_slurm_rpc_resv_show");
 
-		/* init response_msg structure */
-		slurm_msg_t_init(&response_msg);
-		response_msg.flags = msg->flags;
-		response_msg.protocol_version = msg->protocol_version;
-		response_msg.address = msg->address;
-		response_msg.msg_type = RESPONSE_LAYOUT_INFO;
-		response_msg.data = dump;
-		response_msg.data_size = dump_size;
+	dump_size = get_buf_offset(buffer);
+	high_buffer_size = MAX(high_buffer_size, dump_size);
+	dump = xfer_buf_data(buffer);
+	END_TIMER2("_slurm_rpc_resv_show");
 
-		/* send message */
-		slurm_send_node_msg(msg->conn_fd, &response_msg);
-		xfree(dump);
-	}
+	/* init response_msg structure */
+	slurm_msg_t_init(&response_msg);
+	response_msg.flags = msg->flags;
+	response_msg.protocol_version = msg->protocol_version;
+	response_msg.address = msg->address;
+	response_msg.msg_type = RESPONSE_LAYOUT_INFO;
+	response_msg.data = dump;
+	response_msg.data_size = dump_size;
+
+	/* send message */
+	slurm_send_node_msg(msg->conn_fd, &response_msg);
+	xfree(dump);
 }
 
 /* _slurm_rpc_update_block - process RPC to update the configuration