mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-14 00:52:04 +00:00
Wipe Tower Auto Brim bug-fix (Non BBL printers) (#11831)
# Description
Fix application freeze when Prime Tower brim is set to Auto
This PR fixes an issue where enabling Auto brim width for the Prime Tower caused the application to freeze and consume unbounded amounts of memory.
Root cause
0c5f6c9865/src/libslic3r/GCode/WipeTower2.cpp (L2036-L2039)
When Auto brim is selected, the brim width was not being computed and the raw configuration value (-1) was used directly.
This resulted in an effectively infinite loop during Prime Tower brim generation, leading to runaway memory allocation instead of a controlled failure or a crash.
Solution
The Auto brim width is now properly computed based on the Prime Tower height, matching the intended behavior and existing logic used in other slicer implementations.
This commit is contained in:
@@ -2036,7 +2036,11 @@ WipeTower::ToolChangeResult WipeTower2::finish_layer()
|
||||
// brim (first layer only)
|
||||
if (first_layer) {
|
||||
writer.append("; WIPE_TOWER_BRIM_START\n");
|
||||
size_t loops_num = (m_wipe_tower_brim_width + spacing/2.f) / spacing;
|
||||
float brim_width = m_wipe_tower_brim_width;
|
||||
if (brim_width < 0.f)
|
||||
brim_width = WipeTower::get_auto_brim_by_height(m_wipe_tower_height);
|
||||
|
||||
size_t loops_num = (brim_width + spacing / 2.f) / spacing;
|
||||
|
||||
for (size_t i = 0; i < loops_num; ++ i) {
|
||||
poly = offset(poly, scale_(spacing)).front();
|
||||
|
||||
Reference in New Issue
Block a user