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

Bryce Harrington <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
On Tue, Sep 23, 2014 at 10:07:30AM +0100, Chris Wilson wrote:
> 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.

Okay, that makes sense.  So null checks, possibly via inlined helper
functions ala _cairo_surface_is_image, would be the solution here.

Looks like there's quite a few places where surface->backend gets
referenced, that could possibly use such a check.

Ravi - this looks like this refactoring might be up your alley if you're
interested.

Bryce
-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.