Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Ranellucci <aar@cpan.org>2013-07-07 18:51:02 +0400
committerAlessandro Ranellucci <aar@cpan.org>2013-07-07 18:51:02 +0400
commitf4db7625bc0f53e65b92b433e2a3a0c08aa6ad69 (patch)
tree7d4025e3522b367a5a1297540128d7bad78b1939
parentb66a796f0bdc9307fa05a3aef5574fe1acf71887 (diff)
Fix destructors
-rw-r--r--xs/src/ExPolygon.hpp9
-rw-r--r--xs/xsp/ExPolygon.xsp6
-rw-r--r--xs/xsp/Point.xsp1
3 files changed, 9 insertions, 7 deletions
diff --git a/xs/src/ExPolygon.hpp b/xs/src/ExPolygon.hpp
index 0ee9c28a6..7e77a3814 100644
--- a/xs/src/ExPolygon.hpp
+++ b/xs/src/ExPolygon.hpp
@@ -21,21 +21,20 @@ class ExPolygon
SV* arrayref();
};
-Polygon*
-perl2polygon(SV* poly_sv)
+void
+perl2polygon(SV* poly_sv, Polygon& poly)
{
AV* poly_av = (AV*)SvRV(poly_sv);
const unsigned int num_points = av_len(poly_av)+1;
- Polygon* retval = new Polygon(num_points);
+ poly.resize(num_points);
for (unsigned int i = 0; i < num_points; i++) {
SV** point_sv = av_fetch(poly_av, i, 0);
AV* point_av = (AV*)SvRV(*point_sv);
- Point& p = (*retval)[i];
+ Point& p = poly[i];
p.x = (unsigned long)SvIV(*av_fetch(point_av, 0, 0));
p.y = (unsigned long)SvIV(*av_fetch(point_av, 1, 0));
}
- return retval;
}
SV*
diff --git a/xs/xsp/ExPolygon.xsp b/xs/xsp/ExPolygon.xsp
index a69fd26b6..e0442efcc 100644
--- a/xs/xsp/ExPolygon.xsp
+++ b/xs/xsp/ExPolygon.xsp
@@ -6,6 +6,7 @@
%}
%name{Slic3r::ExPolygon::XS} class ExPolygon {
+ ~ExPolygon();
%{
ExPolygon*
@@ -13,9 +14,10 @@ ExPolygon::new(...)
CODE:
RETVAL = new ExPolygon ();
// ST(0) is class name, ST(1) is contour and others are holes
- RETVAL->contour = *perl2polygon(ST(1));
+ perl2polygon(ST(1), RETVAL->contour);
+ RETVAL->holes.resize(items-2);
for (unsigned int i = 2; i < items; i++) {
- RETVAL->holes.push_back(*perl2polygon(ST(i)));
+ perl2polygon(ST(i), RETVAL->holes[i-2]);
}
OUTPUT:
RETVAL
diff --git a/xs/xsp/Point.xsp b/xs/xsp/Point.xsp
index 372d1edd0..ef18931fe 100644
--- a/xs/xsp/Point.xsp
+++ b/xs/xsp/Point.xsp
@@ -7,6 +7,7 @@
%name{Slic3r::Point::XS} class Point {
Point(unsigned long _x = 0, unsigned long _y = 0);
+ ~Point();
%{
SV*