mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Fix infinite loop in flexbox algorithm: Only apply step c if sum of scaled flexible shrink factors > 0
This commit is contained in:
parent
0a70b27625
commit
acfe27a0bf
1 changed files with 6 additions and 4 deletions
|
@ -976,6 +976,7 @@ impl FlexLine<'_> {
|
||||||
let scaled_shrink_factors_sum: Length = unfrozen_items()
|
let scaled_shrink_factors_sum: Length = unfrozen_items()
|
||||||
.map(|(item, _)| scaled_shrink_factor(item))
|
.map(|(item, _)| scaled_shrink_factor(item))
|
||||||
.sum();
|
.sum();
|
||||||
|
if scaled_shrink_factors_sum > Length::zero() {
|
||||||
for (item, target_main_size) in unfrozen_items() {
|
for (item, target_main_size) in unfrozen_items() {
|
||||||
let ratio = scaled_shrink_factor(item) / scaled_shrink_factors_sum;
|
let ratio = scaled_shrink_factor(item) / scaled_shrink_factors_sum;
|
||||||
target_main_size
|
target_main_size
|
||||||
|
@ -983,6 +984,7 @@ impl FlexLine<'_> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// “Fix min/max violations.”
|
// “Fix min/max violations.”
|
||||||
let violation = |(item, target_main_size): (&FlexItem, &Cell<Length>)| {
|
let violation = |(item, target_main_size): (&FlexItem, &Cell<Length>)| {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue