[cairo.region.Region.destroy]. This function always returns a valid pointer; if memory cannot be allocated, then a special error object is returned where all operations on the object do nothing. You can check for this with [cairo.region.Region.status].
Region.copy
cairo.region.Region copy()Allocates a new region object copying the area from original.
Returns
A newly allocated #cairo_region_t. Free with