X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fdraw%2Fao_line.c;h=832a916c76aed9dbe1042f7a024febe071ae93c6;hp=c6b49ee0d6cb1fd71ffe83f3b1369cedeeb15896;hb=4fa489276826e33fa5e21d0a94a8ed3e29ebcfd0;hpb=d804a00a7576d5e3c59c413762248787a1282c16 diff --git a/src/draw/ao_line.c b/src/draw/ao_line.c index c6b49ee0..832a916c 100644 --- a/src/draw/ao_line.c +++ b/src/draw/ao_line.c @@ -54,8 +54,9 @@ * adjust_x = e / e1; */ - - +#ifdef VALIDATE +#include +#endif static void ao_bres(const struct ao_bitmap *dst_bitmap, @@ -88,9 +89,22 @@ ao_bres(const struct ao_bitmap *dst_bitmap, while (len--) { /* clip each point */ +#ifdef VALIDATE + if (x1 < 0 || dst_bitmap->width <= x1) { + printf("bad line x %d\n", x1); + return; + } + if (y1 < 0 || dst_bitmap->height <= y1) { + printf("bad line y %d\n", y1); + return; + } +#endif *dst = ao_do_mask_rrop(*dst, and, xor, mask); if (axis == X_AXIS) { +#ifdef VALIDATE + x1 += signdx; +#endif if (signdx < 0) mask = ao_left(mask, 1); else @@ -101,13 +115,22 @@ ao_bres(const struct ao_bitmap *dst_bitmap, } e += e1; if (e >= 0) { +#ifdef VALIDATE + y1 += signdy; +#endif dst += stride; e += e3; } } else { +#ifdef VALIDATE + y1 += signdy; +#endif dst += stride; e += e1; if (e >= 0) { +#ifdef VALIDATE + x1 += signdx; +#endif if (signdx < 0) mask = ao_left(mask, 1); else