[cairo] [PATCH 1/2] Don't return NULL to clients when getting image

Chris Wilson chris at chris-wilson.co.uk
Tue Sep 23 02:07:30 PDT 2014


On Tue, Sep 23, 2014 at 01:27:35AM -0700, Bryce Harrington wrote:
> On Tue, Sep 23, 2014 at 07:26:51AM +0100, Chris Wilson wrote:
> > On Mon, Sep 22, 2014 at 03:50:25PM -0700, Bryce Harrington wrote:
> > > diff --git a/src/win32/cairo-win32-surface.c b/src/win32/cairo-win32-surface.c
> > > index 7cd46fc..f11cbd8 100644
> > > --- a/src/win32/cairo-win32-surface.c
> > > +++ b/src/win32/cairo-win32-surface.c
> > > @@ -188,7 +188,7 @@ cairo_surface_t *
> > >  cairo_win32_surface_get_image (cairo_surface_t *surface)
> > >  {
> > >      if (surface->backend->type != CAIRO_SURFACE_TYPE_WIN32)
> > 
> > This is still dangerous - error surfaces have no surface->backend to
> > dereference.
> > -Chris
> 
> Good point.  Obviously users should not be trying to use error surfaces,
> but I suppose they might not check.
> 
> What would you suggest?  An assert or NULL check on surface->backend?
> Or introduce error backends?

We use surface->backend == NULL as an indicator that it is an error
surface. See _cairo_surface_is_image() et al.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the cairo mailing list