diff --git a/src/common/gres.c b/src/common/gres.c
index d937ee119df6a14ac64c4550541833f770a216f8..3daebd7bc9f56cdf994710b304bd6448aef5a60e 100644
--- a/src/common/gres.c
+++ b/src/common/gres.c
@@ -3441,6 +3441,8 @@ static bool _cores_on_gres(bitstr_t *core_bitmap,
 		return true;
 
 	for (i = 0; i < node_gres_ptr->topo_cnt; i++) {
+		if (!node_gres_ptr->topo_gres_bitmap[i])
+			continue;
 		if (bit_size(node_gres_ptr->topo_gres_bitmap[i]) < gres_inx)
 			continue;
 		if (!bit_test(node_gres_ptr->topo_gres_bitmap[i], gres_inx))
@@ -3450,6 +3452,8 @@ static bool _cores_on_gres(bitstr_t *core_bitmap,
 		     strcmp(job_gres_ptr->type_model,
 			    node_gres_ptr->topo_model[i])))
 			continue;
+		if (!node_gres_ptr->topo_cpus_bitmap[i])
+			return true;
 		if (bit_size(node_gres_ptr->topo_cpus_bitmap[i]) !=
 		    bit_size(core_bitmap))
 			break;