On Fri, Apr 16, 2010 at 8:42 AM, Tiago Vignatti
<[email protected]> wrote:
> the alternative would be to check ps in the beginning of the function.
>
> Signed-off-by: Tiago Vignatti <[email protected]>
> ---
> exa/exa.c | 2 --
> 1 files changed, 0 insertions(+), 2 deletions(-)
>
> diff --git a/exa/exa.c b/exa/exa.c
> index 590d9a5..51697bc 100644
> --- a/exa/exa.c
> +++ b/exa/exa.c
> @@ -779,14 +779,12 @@ exaCloseScreen(int i, ScreenPtr pScreen)
> unwrap(pExaScr, pScreen, BitmapToRegion);
> unwrap(pExaScr, pScreen, CreateScreenResources);
> #ifdef RENDER
> - if (ps) {
> unwrap(pExaScr, ps, Composite);
> if (pExaScr->SavedGlyphs)
> unwrap(pExaScr, ps, Glyphs);
> unwrap(pExaScr, ps, Trapezoids);
> unwrap(pExaScr, ps, Triangles);
> unwrap(pExaScr, ps, AddTraps);
> - }
> #endif
>
> xfree (pExaScr);
> --
> 1.6.0.4
It seems it would be better to check ps unless you're pretty sure
pScreen always has a PictureScreen.
Looking at this code showed me another "bug".
#ifdef RENDER
PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
#endif
if (ps->Glyphs == exaGlyphs)
exaGlyphsFini(pScreen);
Shouldn't this whole block be under RENDER like the later accesses to
ps? Incidentally, if you just change the conditional to "if (ps &&
ps->Glyphs == exaGlyphs)", then the NULL pointer won't be dereferenced
either.
--
Dan
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel