diff --git a/uppsrc/Painter/Render.cpp b/uppsrc/Painter/Render.cpp index 841a1e43a..e531407bc 100644 --- a/uppsrc/Painter/Render.cpp +++ b/uppsrc/Painter/Render.cpp @@ -293,7 +293,7 @@ Buffer BufferPainter::RenderPath(double width, EventGetWidth(); span_filler.y = subpixel_filler.y = y; Rasterizer::Filler *rf = rg; - if(clip.GetCount()) { + if(clip.GetCount() && clip.Top()) { const ClippingLine& s = clip.Top()[y]; if(s.IsEmpty()) goto empty; if(!s.IsFull()) { @@ -389,11 +389,13 @@ void BufferPainter::FinishPathJob() subpixel_filler.t = (*ip)[y]; subpixel_filler.end = subpixel_filler.t + ip->GetWidth(); if(clip.GetCount()) { - MaskFillerFilter mf; - const ClippingLine& s = clip.Top()[y]; - if(!s.IsEmpty() && !s.IsFull()) { - mf.Set(&subpixel_filler, s); - j.rasterizer.Render(y, mf, j.evenodd); + if(clip.Top()) { + MaskFillerFilter mf; + const ClippingLine& s = clip.Top()[y]; + if(!s.IsEmpty() && !s.IsFull()) { + mf.Set(&subpixel_filler, s); + j.rasterizer.Render(y, mf, j.evenodd); + } } } else @@ -413,11 +415,13 @@ void BufferPainter::FinishPathJob() solid_filler.invert = j.attr.invert; solid_filler.t = (*ip)[y]; if(clip.GetCount()) { - MaskFillerFilter mf; - const ClippingLine& s = clip.Top()[y]; - if(!s.IsEmpty() && !s.IsFull()) { - mf.Set(&solid_filler, s); - j.rasterizer.Render(y, mf, j.evenodd); + if(clip.Top()) { + MaskFillerFilter mf; + const ClippingLine& s = clip.Top()[y]; + if(!s.IsEmpty() && !s.IsFull()) { + mf.Set(&solid_filler, s); + j.rasterizer.Render(y, mf, j.evenodd); + } } } else