diff --git a/src/shape.c b/src/shape.c index 17b47e3..35aa34c 100644 --- a/src/shape.c +++ b/src/shape.c @@ -69,12 +69,17 @@ Shape* shape_new(const Vector* points, size_t points_len) { self->points = list_from_type(Vector); list_reserve(&self->points, points_len); - memcpy(list_iterator_begin_as(Vector, &self->points), points, points_len * sizeof(Vector)); - self->points.len = points_len; + if(points != NULL) { + memcpy(list_iterator_begin_as(Vector, &self->points), points, points_len * sizeof(Vector)); + self->points.len = points_len; - // derive metadata - self->mean = _shape_calculate_mean(self); - self->is_convex = _shape_calculate_is_convex(self); + // derive metadata + self->mean = _shape_calculate_mean(self); + self->is_convex = _shape_calculate_is_convex(self); + } else { + self->is_convex = 1; + self->mean = ZeroVector; + } return self; }