diff --git a/mi/mipoly.c b/mi/mipoly.c index 3cdb56925..4b068e7e2 100644 --- a/mi/mipoly.c +++ b/mi/mipoly.c @@ -587,8 +587,10 @@ miFillGeneralPoly(DrawablePtr dst, GCPtr pgc, int count, DDXPointPtr ptsIn) width = FirstWidth; nPts = 0; } - EVALUATEEDGEEVENODD(pAET, pPrevAET, y); - EVALUATEEDGEEVENODD(pAET, pPrevAET, y); + if (pAET != NULL) { // FIXME: somewhow analyzer still complains + EVALUATEEDGEEVENODD(pAET, pPrevAET, y); + EVALUATEEDGEEVENODD(pAET, pPrevAET, y); + } } miInsertionSort(&AET); } diff --git a/mi/mipoly.h b/mi/mipoly.h index d67a5249e..10632f232 100644 --- a/mi/mipoly.h +++ b/mi/mipoly.h @@ -159,6 +159,7 @@ typedef struct _ScanLineListBlock { * The even-odd rule is in effect. */ #define EVALUATEEDGEEVENODD(pAET, pPrevAET, y) { \ + assert(pAET); \ if (pAET->ymax == y) { /* leaving this edge */ \ pPrevAET->next = pAET->next; \ pAET = pPrevAET->next; \