diff options
author | Benjamin Otte <otte@redhat.com> | 2010-07-05 22:40:54 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2010-07-05 22:40:54 +0200 |
commit | 19da8e138d317c1770d8bbd21a49c657d954f126 (patch) | |
tree | c8944fdad7fde5c24a4c29748a5d63bf80583e50 /src/cairo-tee-surface.c | |
parent | a9f30fc1f0c3e50715468b09707477973bf5268b (diff) | |
download | cairo-19da8e138d317c1770d8bbd21a49c657d954f126.tar.gz |
tee: Add proper error handling
Caught by api-special-cases
Diffstat (limited to 'src/cairo-tee-surface.c')
-rw-r--r-- | src/cairo-tee-surface.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/cairo-tee-surface.c b/src/cairo-tee-surface.c index be530e03f..f17c37c22 100644 --- a/src/cairo-tee-surface.c +++ b/src/cairo-tee-surface.c @@ -468,6 +468,11 @@ cairo_tee_surface_add (cairo_surface_t *abstract_surface, if (unlikely (abstract_surface->status)) return; + if (unlikely (abstract_surface->finished)) { + status = _cairo_surface_set_error (abstract_surface, + _cairo_error (CAIRO_STATUS_SURFACE_FINISHED)); + return; + } if (abstract_surface->backend != &cairo_tee_surface_backend) { status = _cairo_surface_set_error (abstract_surface, @@ -500,6 +505,14 @@ cairo_tee_surface_remove (cairo_surface_t *abstract_surface, int n, num_slaves; cairo_status_t status; + if (unlikely (abstract_surface->status)) + return; + if (unlikely (abstract_surface->finished)) { + status = _cairo_surface_set_error (abstract_surface, + _cairo_error (CAIRO_STATUS_SURFACE_FINISHED)); + return; + } + if (abstract_surface->backend != &cairo_tee_surface_backend) { status = _cairo_surface_set_error (abstract_surface, _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); @@ -540,6 +553,8 @@ cairo_tee_surface_index (cairo_surface_t *abstract_surface, if (unlikely (abstract_surface->status)) return _cairo_surface_create_in_error (abstract_surface->status); + if (unlikely (abstract_surface->finished)) + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_SURFACE_FINISHED)); if (abstract_surface->backend != &cairo_tee_surface_backend) return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH)); |