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:
Rodrigo Faselli
2026-01-05 09:15:23 -03:00
committed by GitHub
parent 8670bb65f2
commit ef876fe577

View File

@@ -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();