commit:     ca86126321ec717b0bc04009904515dbc447e4e4
Author:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 22 10:59:42 2023 +0000
Commit:     Miroslav Šulc <fordfrog <AT> gentoo <DOT> org>
CommitDate: Sat Apr 22 11:03:23 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ca861263

media-gfx/prusaslicer: fixed crash during slicing

thanks to Caleb Jorden for the fix

Bug: https://bugs.gentoo.org/900340
Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org>

 .../files/prusaslicer-2.5.2-fix-slicing.patch      | 76 ++++++++++++++++++++++
 ...er-2.5.2.ebuild => prusaslicer-2.5.2-r1.ebuild} |  1 +
 2 files changed, 77 insertions(+)

diff --git a/media-gfx/prusaslicer/files/prusaslicer-2.5.2-fix-slicing.patch 
b/media-gfx/prusaslicer/files/prusaslicer-2.5.2-fix-slicing.patch
new file mode 100644
index 000000000000..ae85057f10bd
--- /dev/null
+++ b/media-gfx/prusaslicer/files/prusaslicer-2.5.2-fix-slicing.patch
@@ -0,0 +1,76 @@
+diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp
+index f8fc2e5a7..c74ee32dd 100644
+--- a/src/libslic3r/GCode.cpp
++++ b/src/libslic3r/GCode.cpp
+@@ -1551,27 +1551,27 @@ void GCode::process_layers(
+             }
+         });
+     const auto spiral_vase = tbb::make_filter<LayerResult, 
LayerResult>(slic3r_tbb_filtermode::serial_in_order,
+-        [&spiral_vase = *this->m_spiral_vase](LayerResult in) -> LayerResult {
++        [spiral_vase = this->m_spiral_vase.get()](LayerResult in) -> 
LayerResult {
+             if (in.nop_layer_result)
+                 return in;
+ 
+-            spiral_vase.enable(in.spiral_vase_enable);
+-            return { spiral_vase.process_layer(std::move(in.gcode)), 
in.layer_id, in.spiral_vase_enable, in.cooling_buffer_flush};
++            spiral_vase->enable(in.spiral_vase_enable);
++            return { spiral_vase->process_layer(std::move(in.gcode)), 
in.layer_id, in.spiral_vase_enable, in.cooling_buffer_flush};
+         });
+     const auto pressure_equalizer = tbb::make_filter<LayerResult, 
LayerResult>(slic3r_tbb_filtermode::serial_in_order,
+-        [&pressure_equalizer = *this->m_pressure_equalizer](LayerResult in) 
-> LayerResult {
+-            return pressure_equalizer.process_layer(std::move(in));
++        [pressure_equalizer = this->m_pressure_equalizer.get()](LayerResult 
in) -> LayerResult {
++            return pressure_equalizer->process_layer(std::move(in));
+         });
+     const auto cooling = tbb::make_filter<LayerResult, 
std::string>(slic3r_tbb_filtermode::serial_in_order,
+-        [&cooling_buffer = *this->m_cooling_buffer](LayerResult in) -> 
std::string {
++        [cooling_buffer = this->m_cooling_buffer.get()](LayerResult in) -> 
std::string {
+              if (in.nop_layer_result)
+                 return in.gcode;
+ 
+-             return cooling_buffer.process_layer(std::move(in.gcode), 
in.layer_id, in.cooling_buffer_flush);
++             return cooling_buffer->process_layer(std::move(in.gcode), 
in.layer_id, in.cooling_buffer_flush);
+         });
+     const auto find_replace = tbb::make_filter<std::string, 
std::string>(slic3r_tbb_filtermode::serial_in_order,
+-        [&self = *this->m_find_replace](std::string s) -> std::string {
+-            return self.process_layer(std::move(s));
++        [find_replace = this->m_find_replace.get()](std::string s) -> 
std::string {
++            return find_replace->process_layer(std::move(s));
+         });
+     const auto output = tbb::make_filter<std::string, 
void>(slic3r_tbb_filtermode::serial_in_order,
+         [&output_stream](std::string s) { output_stream.write(s); }
+@@ -1633,25 +1633,25 @@ void GCode::process_layers(
+             }
+         });
+     const auto spiral_vase = tbb::make_filter<LayerResult, 
LayerResult>(slic3r_tbb_filtermode::serial_in_order,
+-        [&spiral_vase = *this->m_spiral_vase](LayerResult in)->LayerResult {
++        [spiral_vase = this->m_spiral_vase.get()](LayerResult 
in)->LayerResult {
+             if (in.nop_layer_result)
+                 return in;
+-            spiral_vase.enable(in.spiral_vase_enable);
+-            return { spiral_vase.process_layer(std::move(in.gcode)), 
in.layer_id, in.spiral_vase_enable, in.cooling_buffer_flush };
++            spiral_vase->enable(in.spiral_vase_enable);
++            return { spiral_vase->process_layer(std::move(in.gcode)), 
in.layer_id, in.spiral_vase_enable, in.cooling_buffer_flush };
+         });
+     const auto pressure_equalizer = tbb::make_filter<LayerResult, 
LayerResult>(slic3r_tbb_filtermode::serial_in_order,
+-        [&pressure_equalizer = *this->m_pressure_equalizer](LayerResult in) 
-> LayerResult {
+-             return pressure_equalizer.process_layer(std::move(in));
++        [pressure_equalizer = this->m_pressure_equalizer.get()](LayerResult 
in) -> LayerResult {
++             return pressure_equalizer->process_layer(std::move(in));
+         });
+     const auto cooling = tbb::make_filter<LayerResult, 
std::string>(slic3r_tbb_filtermode::serial_in_order,
+-        [&cooling_buffer = *this->m_cooling_buffer](LayerResult 
in)->std::string {
++        [cooling_buffer = this->m_cooling_buffer.get()](LayerResult 
in)->std::string {
+             if (in.nop_layer_result)
+                 return in.gcode;
+-            return cooling_buffer.process_layer(std::move(in.gcode), 
in.layer_id, in.cooling_buffer_flush);
++            return cooling_buffer->process_layer(std::move(in.gcode), 
in.layer_id, in.cooling_buffer_flush);
+         });
+     const auto find_replace = tbb::make_filter<std::string, 
std::string>(slic3r_tbb_filtermode::serial_in_order,
+-        [&self = *this->m_find_replace](std::string s) -> std::string {
+-            return self.process_layer(std::move(s));
++        [find_replace = this->m_find_replace.get()](std::string s) -> 
std::string {
++            return find_replace->process_layer(std::move(s));
+         });
+     const auto output = tbb::make_filter<std::string, 
void>(slic3r_tbb_filtermode::serial_in_order,
+         [&output_stream](std::string s) { output_stream.write(s); }

diff --git a/media-gfx/prusaslicer/prusaslicer-2.5.2.ebuild 
b/media-gfx/prusaslicer/prusaslicer-2.5.2-r1.ebuild
similarity index 97%
rename from media-gfx/prusaslicer/prusaslicer-2.5.2.ebuild
rename to media-gfx/prusaslicer/prusaslicer-2.5.2-r1.ebuild
index 09476833706a..e0a2d4fd7cfd 100644
--- a/media-gfx/prusaslicer/prusaslicer-2.5.2.ebuild
+++ b/media-gfx/prusaslicer/prusaslicer-2.5.2-r1.ebuild
@@ -54,6 +54,7 @@ PATCHES=(
        "${FILESDIR}/${PN}-2.5.0_rc1-cereal-1.3.1.patch"
        "${FILESDIR}/${PN}-2.5.0_rc1-fix-tests.patch"
        "${FILESDIR}/${PN}-2.5.0_boost-1.81-std-wxString-to-std-wstring.patch"
+       "${FILESDIR}/${PN}-2.5.2-fix-slicing.patch"
 )
 
 S="${WORKDIR}/${MY_PN}-version_${MY_PV}"

Reply via email to