diff --git a/lib/Slic3r/ExPolygon.pm b/lib/Slic3r/ExPolygon.pm index 318573e07..fd1af58b0 100644 --- a/lib/Slic3r/ExPolygon.pm +++ b/lib/Slic3r/ExPolygon.pm @@ -9,6 +9,7 @@ use List::Util qw(first); use Math::Geometry::Voronoi; use Slic3r::Geometry qw(X Y A B point_in_polygon same_line epsilon); use Slic3r::Geometry::Clipper qw(union_ex JT_MITER); +use Storable qw(); # the constructor accepts an array of polygons # or a Math::Clipper ExPolygon (hashref) @@ -28,8 +29,7 @@ sub new { } sub clone { - my $self = shift; - return (ref $self)->new(map $_->clone, @$self); + Storable::dclone($_[0]) } sub contour { diff --git a/lib/Slic3r/Polyline.pm b/lib/Slic3r/Polyline.pm index 1f059e0de..f2a9cbd7f 100644 --- a/lib/Slic3r/Polyline.pm +++ b/lib/Slic3r/Polyline.pm @@ -6,6 +6,7 @@ use Scalar::Util qw(reftype); use Slic3r::Geometry qw(A B X Y X1 X2 Y1 Y2 polyline_remove_parallel_continuous_edges polyline_remove_acute_vertices polyline_lines move_points same_point); use Slic3r::Geometry::Clipper qw(JT_SQUARE); +use Storable qw(); # the constructor accepts an array(ref) of points sub new { @@ -18,8 +19,7 @@ sub new { } sub clone { - my $self = shift; - return (ref $self)->new(map $_->clone, @$self); + Storable::dclone($_[0]) } sub serialize {