From 51af10da4f2c8204ec845a9269d9e9f5a0be66ac Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Sun, 12 Jan 2014 12:35:13 +0100 Subject: [PATCH] Some fixes to config API --- lib/Slic3r/Config.pm | 8 ++++---- xs/src/TriangleMesh.cpp | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/Slic3r/Config.pm b/lib/Slic3r/Config.pm index 5a476998..9b1a6393 100644 --- a/lib/Slic3r/Config.pm +++ b/lib/Slic3r/Config.pm @@ -379,13 +379,13 @@ sub replace_options { $string =~ s/\[version\]/$Slic3r::VERSION/eg; # build a regexp to match the available options - my @options = grep !$Slic3r::Config::Options->{$_}{multiline}, - grep $self->has($_), - keys %{$Slic3r::Config::Options}; + my @options = grep !$Slic3r::Config::Options->{$_}{multiline}, @{$self->get_keys}; my $options_regex = join '|', @options; # use that regexp to search and replace option names with option values - $string =~ s/\[($options_regex)\]/$self->serialize($1)/eg; + # it looks like passing $1 as argument to serialize() directly causes a segfault + # (maybe some perl optimization? maybe regex captures are not regular SVs?) + $string =~ s/\[($options_regex)\]/my $opt_key = $1; $self->serialize($opt_key)/eg; foreach my $opt_key (grep ref $self->$_ eq 'ARRAY', @options) { my $value = $self->$opt_key; $string =~ s/\[${opt_key}_${_}\]/$value->[$_]/eg for 0 .. $#$value; diff --git a/xs/src/TriangleMesh.cpp b/xs/src/TriangleMesh.cpp index c5f590da..90da0571 100644 --- a/xs/src/TriangleMesh.cpp +++ b/xs/src/TriangleMesh.cpp @@ -580,10 +580,10 @@ TriangleMesh::slice(const std::vector &z, std::vector* layer #ifdef SLIC3R_DEBUG size_t holes_count = 0; for (ExPolygons::const_iterator e = ex_slices.begin(); e != ex_slices.end(); ++e) { - holes_count += e->holes.count(); + holes_count += e->holes.size(); } - printf("Layer %d (slice_z = %.2f): %d surface(s) having %d holes detected from %d polylines\n", - layer_id, z[layer_id], ex_slices.count(), holes_count, loops->count()); + printf("Layer %zu (slice_z = %.2f): %zu surface(s) having %zu holes detected from %zu polylines\n", + layer_id, z[layer_id], ex_slices.size(), holes_count, loops->size()); #endif ExPolygons* layer = &(*layers)[layer_id];