servo/components/layout_2020
Oriol Brufau f593b6d426
Protect create_spanned_slot_based_on_cell_above() against arithmetic underflow (#35437)
`Table::create_spanned_slot_based_on_cell_above()` was performing the
subtraction `self.slots.len() - 2`, which could theoretically result
in underflow if `self.slots.len()` is 0 or 1.

That shouldn't have been possible in practice, but it may be worth
addressing, to improve code robustness. So this patch:
  - Switches to `self.current_y()?.checked_sub(1)?`, which is safe and
    is easier to understand.
  - Moves `create_spanned_slot_based_on_cell_above()` to `TableBuilder`,
    since `current_y()` is there, and the method is only used when
    building the table anyways.
  - Ensures that both callers use `expect()` to assert that the method
    returned a value.

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
2025-02-12 20:11:11 +00:00
..
display_list Implement overflow:clip (#35103) 2025-02-12 07:02:06 +00:00
flexbox layout: align-content with default value normal should behave as strech in flex container (#35178) 2025-02-03 08:27:55 +00:00
flow Upgrade Stylo to 2025-02-03 (#35289) 2025-02-05 02:35:58 +00:00
fragment_tree Make naming of variables consistent with SpecificLayoutInfo (#35104) 2025-01-21 17:28:14 +00:00
table Protect create_spanned_slot_based_on_cell_above() against arithmetic underflow (#35437) 2025-02-12 20:11:11 +00:00
taffy Implement overflow:clip (#35103) 2025-02-12 07:02:06 +00:00
tests Update deprecated use of PanicInfo to PanicHookInfo (#34659) 2024-12-17 03:50:26 +00:00
Cargo.toml layout: Remove the obsolete layout tracing functionality (#35001) 2025-01-15 13:24:14 +00:00
cell.rs layout: Remove the obsolete layout tracing functionality (#35001) 2025-01-15 13:24:14 +00:00
construct_modern.rs layout: Take percentage columns into account when sizing table grid min and max (#35167) 2025-01-27 15:04:37 +00:00
context.rs script: Do not set up an IPC route for every image load (#35041) 2025-01-25 09:39:04 +00:00
dom.rs layout: Clean up inline layout data types a bit (#34563) 2024-12-11 14:40:34 +00:00
dom_traversal.rs Lay out the contents of slot elements (#35220) 2025-02-02 20:49:42 +00:00
formatting_contexts.rs layout: Limit content_inline_size_for_table override to collapsed columns (#35209) 2025-02-05 00:35:59 +00:00
geom.rs layout: Limit content_inline_size_for_table override to collapsed columns (#35209) 2025-02-05 00:35:59 +00:00
layout_box_base.rs layout: Remove the obsolete layout tracing functionality (#35001) 2025-01-15 13:24:14 +00:00
lib.rs layout: Take percentage columns into account when sizing table grid min and max (#35167) 2025-01-27 15:04:37 +00:00
lists.rs layout: Add LayoutBoxBase and use it for IndependentFormattingContext (#34507) 2024-12-07 19:12:25 +00:00
positioned.rs layout: Limit content_inline_size_for_table override to collapsed columns (#35209) 2025-02-05 00:35:59 +00:00
query.rs Make naming of variables consistent with SpecificLayoutInfo (#35104) 2025-01-21 17:28:14 +00:00
replaced.rs layout: Limit content_inline_size_for_table override to collapsed columns (#35209) 2025-02-05 00:35:59 +00:00
sizing.rs layout: Remove some unneeded is_table parameters (#35064) 2025-01-19 00:25:53 +00:00
style_ext.rs Let resolve_color() take its parameter by reference (#35247) 2025-01-31 23:34:40 +00:00
traversal.rs Elide lifetimes where possible after rustup (#34824) 2025-01-03 18:54:44 +00:00