File tree Expand file tree Collapse file tree 1 file changed +10
-1
lines changed Expand file tree Collapse file tree 1 file changed +10
-1
lines changed Original file line number Diff line number Diff line change @@ -450,6 +450,15 @@ pub fn prepare_quad(
450
450
451
451
let rect = int_rect. to_f32 ( ) ;
452
452
453
+ // At extreme scales the rect can round to zero size due to
454
+ // f32 precision, causing a panic in new_dynamic, so just
455
+ // skip segments that would produce zero size tasks.
456
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1941838#c13
457
+ let int_rect_size = int_rect. round ( ) . to_i32 ( ) . size ( ) ;
458
+ if int_rect_size. is_empty ( ) {
459
+ continue ;
460
+ }
461
+
453
462
if is_direct {
454
463
scratch. quad_direct_segments . push ( QuadSegment { rect : rect. cast_unit ( ) , task_id : RenderTaskId :: INVALID } ) ;
455
464
} else {
@@ -480,7 +489,7 @@ pub fn prepare_quad(
480
489
481
490
let task_id = add_render_task_with_mask (
482
491
& pattern,
483
- int_rect . round ( ) . to_i32 ( ) . size ( ) ,
492
+ int_rect_size ,
484
493
rect. min ,
485
494
clip_chain. clips_range ,
486
495
prim_spatial_node_index,
You can’t perform that action at this time.
0 commit comments