sna: Correct iteration counter for stippled blits

==7215== Invalid read of size 2
==7215==    at 0x51A72F3: sna_poly_fill_rect_stippled_8x8_blt
(sna_accel.c:7340)
==7215==    by 0x51A9CDF: sna_poly_fill_rect_stippled_blt
(sna_accel.c:8163)
==7215==    by 0x51A3878: sna_poly_segment (sna_accel.c:6090)
==7215==    by 0x216C02: damagePolySegment (damage.c:1096)
==7215==    by 0x13F6E8: ProcPolySegment (dispatch.c:1771)
==7215==    by 0x1436B4: Dispatch (dispatch.c:437)
==7215==    by 0x131279: main (main.c:287)
==7215==  Address 0x6f851e8 is 0 bytes after a block of size 32 alloc'd
==7215==    at 0x4825DEC: malloc (vg_replace_malloc.c:261)
==7215==    by 0x51A3558: sna_poly_segment (sna_accel.c:6049)
==7215==    by 0x216C02: damagePolySegment (damage.c:1096)
==7215==    by 0x13F6E8: ProcPolySegment (dispatch.c:1771)
==7215==    by 0x1436B4: Dispatch (dispatch.c:437)
==7215==    by 0x131279: main (main.c:287)

An example being the stippled outline in gimp, the yellow marching ants,
would randomly walk over the entire image.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2012-01-12 23:45:03 +00:00
parent 5c2c6474ef
commit 0845fcef9e
1 changed files with 1 additions and 1 deletions

View File

@ -7369,7 +7369,7 @@ sna_poly_fill_rect_stippled_8x8_blt(DrawablePtr drawable,
b[8] = pat[1];
sna->kgem.nbatch += 9;
}
} while (n--);
} while (--n);
} else {
const BoxRec * const clip_start = RegionBoxptr(&clip);
const BoxRec * const clip_end = clip_start + clip.data->numRects;