diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index 08fa256d350ba3060826a09c161509a40af1ea84..b9dcbee49763146054a92d83cf3bd374301a57c8 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -580,10 +580,8 @@ static void *_slurmctld_background(void *no_data)
 
 	if (config_list)
 		list_destroy(config_list);
-	if (node_record_table_ptr)
-		xfree(node_record_table_ptr);
-	if (hash_table)
-		xfree(hash_table);
+	FREE_NULL(node_record_table_ptr);
+	FREE_NULL(hash_table);
 
 	agent_purge();
 #endif
@@ -826,8 +824,7 @@ static void _slurm_rpc_dump_jobs(slurm_msg_t * msg)
 		slurm_send_node_msg(msg->conn_fd, &response_msg);
 		info("_slurm_rpc_dump_jobs, size=%d, time=%ld",
 		     dump_size, (long) (clock() - start_time));
-		if (dump)
-			xfree(dump);
+		FREE_NULL(dump);
 	}
 }
 
@@ -867,8 +864,7 @@ static void _slurm_rpc_dump_nodes(slurm_msg_t * msg)
 		slurm_send_node_msg(msg->conn_fd, &response_msg);
 		info("_slurm_rpc_dump_nodes, size=%d, time=%ld",
 		     dump_size, (long) (clock() - start_time));
-		if (dump)
-			xfree(dump);
+		FREE_NULL(dump);
 	}
 }
 
@@ -908,8 +904,7 @@ static void _slurm_rpc_dump_partitions(slurm_msg_t * msg)
 		slurm_send_node_msg(msg->conn_fd, &response_msg);
 		info("_slurm_rpc_dump_partitions, size=%d, time=%ld",
 		     dump_size, (long) (clock() - start_time));
-		if (dump)
-			xfree(dump);
+		FREE_NULL(dump);
 	}
 }
 
diff --git a/src/slurmctld/job_scheduler.c b/src/slurmctld/job_scheduler.c
index ea5a3226db2208b6110d3ff05c248fc66db7f405..015765084fcd44419f113f64e97f67b1ba30233c 100644
--- a/src/slurmctld/job_scheduler.c
+++ b/src/slurmctld/job_scheduler.c
@@ -161,10 +161,8 @@ int schedule(void)
 		}
 	}
 
-	if (failed_parts)
-		xfree(failed_parts);
-	if (job_queue)
-		xfree(job_queue);
+	FREE_NULL(failed_parts);
+	FREE_NULL(job_queue);
 	unlock_slurmctld(job_write_lock);
 	return job_cnt;
 }
diff --git a/src/slurmctld/node_mgr.c b/src/slurmctld/node_mgr.c
index 8e07c28de4f52548b7448bb902e3e3caf6c95520..85363817a065b9353b15d1edf4fbe6fb9f4c6653 100644
--- a/src/slurmctld/node_mgr.c
+++ b/src/slurmctld/node_mgr.c
@@ -471,8 +471,7 @@ int load_all_node_state ( void )
 			error ("Invalid data for node %s: cpus=%u, state=%u",
 				node_name, cpus, node_state);
 			error ("No more node data will be processed from the checkpoint file");
-			if (node_name)
-				xfree (node_name);
+			FREE_NULL (node_name);
 			error_code = EINVAL;
 			break;
 			
@@ -490,8 +489,7 @@ int load_all_node_state ( void )
 			error ("Node %s has vanished from configuration", 
 			       node_name);
 		}
-		if (node_name)
-			xfree (node_name);
+		FREE_NULL (node_name);
 	}
 
 	free_buf (buffer);
@@ -627,14 +625,8 @@ int init_node_conf (void)
 	last_node_update = time (NULL);
 
 	node_record_count = 0;
-	if (node_record_table_ptr) {
-		xfree (node_record_table_ptr);
-		node_record_table_ptr = NULL;
-	}
-	if (hash_table) {
-		xfree (hash_table);
-		hash_table = NULL;
-	}
+	FREE_NULL (node_record_table_ptr);
+	FREE_NULL (hash_table);
 
 	strcpy (default_node_record.name, "DEFAULT");
 	default_node_record.node_state = NODE_STATE_UNKNOWN;
@@ -648,15 +640,9 @@ int init_node_conf (void)
 	default_config_record.real_memory = 1;
 	default_config_record.tmp_disk = 1;
 	default_config_record.weight = 1;
-	if (default_config_record.feature)
-		xfree (default_config_record.feature);
-	default_config_record.feature = (char *) NULL;
-	if (default_config_record.nodes)
-		xfree (default_config_record.nodes);
-	default_config_record.nodes = (char *) NULL;
-	if (default_config_record.node_bitmap)
-		bit_free (default_config_record.node_bitmap);
-	default_config_record.node_bitmap = (bitstr_t *) NULL;
+	FREE_NULL (default_config_record.feature);
+	FREE_NULL(default_config_record.nodes);
+	FREE_NULL_BITMAP (default_config_record.node_bitmap);
 
 	if (config_list)	/* delete defunct configuration entries */
 		(void) _delete_config_record ();
@@ -687,12 +673,9 @@ static void _list_delete_config (void *config_entry)
 	struct config_record *config_record_point;
 
 	config_record_point = (struct config_record *) config_entry;
-	if (config_record_point->feature)
-		xfree (config_record_point->feature);
-	if (config_record_point->nodes)
-		xfree (config_record_point->nodes);
-	if (config_record_point->node_bitmap)
-		bit_free (config_record_point->node_bitmap);
+	FREE_NULL (config_record_point->feature);
+	FREE_NULL (config_record_point->nodes);
+	FREE_NULL (config_record_point->node_bitmap);
 	xfree (config_record_point);
 }
 
diff --git a/src/slurmctld/partition_mgr.c b/src/slurmctld/partition_mgr.c
index a4188c78c0809980b7e147b133374d99a1ac11b1..8956a0cae0c69c851eeb48381311474e6d0c8404 100644
--- a/src/slurmctld/partition_mgr.c
+++ b/src/slurmctld/partition_mgr.c
@@ -401,8 +401,7 @@ int load_all_part_state(void)
 			     state_up);
 			error
 			    ("No more partition data will be processed from the checkpoint file");
-			if (part_name)
-				xfree(part_name);
+			FREE_NULL(part_name);
 			error_code = EINVAL;
 			break;
 		}
@@ -421,19 +420,16 @@ int load_all_part_state(void)
 			part_ptr->root_only = root_only;
 			part_ptr->shared = shared;
 			part_ptr->state_up = state_up;
-			if (part_ptr->allow_groups)
-				xfree(part_ptr->allow_groups);
+			FREE_NULL(part_ptr->allow_groups);
 			part_ptr->allow_groups = allow_groups;
-			if (part_ptr->nodes)
-				xfree(part_ptr->nodes);
+			FREE_NULL(part_ptr->nodes);
 			part_ptr->nodes = nodes;
 		} else {
 			info("load_all_part_state: partition %s removed from configuration file", 
 			     part_name);
 		}
 
-		if (part_name)
-			xfree(part_name);
+		FREE_NULL(part_name);
 	}
 
 	free_buf(buffer);
@@ -478,18 +474,10 @@ int init_part_conf(void)
 	default_part.shared = SHARED_NO;
 	default_part.total_nodes = 0;
 	default_part.total_cpus = 0;
-	if (default_part.nodes)
-		xfree(default_part.nodes);
-	default_part.nodes = (char *) NULL;
-	if (default_part.allow_groups)
-		xfree(default_part.allow_groups);
-	default_part.allow_groups = (char *) NULL;
-	if (default_part.allow_uids)
-		xfree(default_part.allow_uids);
-	default_part.allow_uids = (uid_t *) NULL;
-	if (default_part.node_bitmap)
-		bit_free(default_part.node_bitmap);
-	default_part.node_bitmap = (bitstr_t *) NULL;
+	FREE_NULL(default_part.nodes);
+	FREE_NULL(default_part.allow_groups);
+	FREE_NULL(default_part.allow_uids);
+	FREE_NULL_BITMAP(default_part.node_bitmap);
 
 	if (part_list)		/* delete defunct partitions */
 		(void) _delete_part_record(NULL);
@@ -525,14 +513,10 @@ static void _list_delete_part(void *part_entry)
 			continue;
 		node_record_table_ptr[i].partition_ptr = NULL;
 	}
-	if (part_record_point->allow_groups)
-		xfree(part_record_point->allow_groups);
-	if (part_record_point->allow_uids)
-		xfree(part_record_point->allow_uids);
-	if (part_record_point->nodes)
-		xfree(part_record_point->nodes);
-	if (part_record_point->node_bitmap)
-		bit_free(part_record_point->node_bitmap);
+	FREE_NULL(part_record_point->allow_groups);
+	FREE_NULL(part_record_point->allow_uids);
+	FREE_NULL(part_record_point->nodes);
+	FREE_NULL_BITMAP(part_record_point->node_bitmap);
 	xfree(part_entry);
 }
 
@@ -722,15 +706,13 @@ int update_part(update_part_msg_t * part_desc)
 	}
 
 	if (part_desc->allow_groups != NULL) {
-		if (part_ptr->allow_groups)
-			xfree(part_ptr->allow_groups);
+		FREE_NULL(part_ptr->allow_groups);
 		i = strlen(part_desc->allow_groups) + 1;
 		part_ptr->allow_groups = xmalloc(i);
 		strcpy(part_ptr->allow_groups, part_desc->allow_groups);
 		info("update_part: setting allow_groups to %s for partition %s", 
 		     part_desc->allow_groups, part_desc->name);
-		if (part_ptr->allow_uids)
-			xfree(part_ptr->allow_uids);
+		FREE_NULL(part_ptr->allow_uids);
 		part_ptr->allow_uids =
 		    _get_groups_members(part_desc->allow_groups);
 	}
@@ -744,14 +726,12 @@ int update_part(update_part_msg_t * part_desc)
 
 		error_code = _build_part_bitmap(part_ptr);
 		if (error_code) {
-			if (part_ptr->nodes)
-				xfree(part_ptr->nodes);
+			FREE_NULL(part_ptr->nodes);
 			part_ptr->nodes = backup_node_list;
 		} else {
 			info("update_part: setting nodes to %s for partition %s", 
 			     part_desc->nodes, part_desc->name);
-			if (backup_node_list)
-				xfree(backup_node_list);
+			FREE_NULL(backup_node_list);
 		}
 	}
 
@@ -807,8 +787,7 @@ void load_part_uid_allow_list(int force)
 	part_record_iterator = list_iterator_create(part_list);
 	while ((part_record_point =
 		(struct part_record *) list_next(part_record_iterator))) {
-		if (part_record_point->allow_uids)
-			xfree(part_record_point->allow_uids);
+		FREE_NULL(part_record_point->allow_uids);
 		part_record_point->allow_uids =
 		    _get_groups_members(part_record_point->allow_groups);
 	}