in h3_polyfill.c [324:358]
static IterCellsPolygonCompact _iterInitPolygonCompact(
const GeoPolygon *polygon, int res, uint32_t flags) {
IterCellsPolygonCompact iter = {// Initialize output properties. The first
// valid cell will be set in iterStep
.cell = baseCellNumToCell(0),
.error = E_SUCCESS,
// Save input arguments
._polygon = polygon,
._res = res,
._flags = flags,
._bboxes = NULL,
._started = false};
if (res < 0 || res > MAX_H3_RES) {
iterErrorPolygonCompact(&iter, E_RES_DOMAIN);
return iter;
}
H3Error flagErr = validatePolygonFlags(flags);
if (flagErr) {
iterErrorPolygonCompact(&iter, flagErr);
return iter;
}
// Initialize bounding boxes for polygon and any holes. Memory allocated
// here must be released through iterDestroyPolygonCompact
iter._bboxes = H3_MEMORY(calloc)((polygon->numHoles + 1), sizeof(BBox));
if (!iter._bboxes) {
iterErrorPolygonCompact(&iter, E_MEMORY_ALLOC);
return iter;
}
bboxesFromGeoPolygon(polygon, iter._bboxes);
return iter;
}