mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-01-08 11:50:26 +01:00
cairo_create(): Add finished surface check
Without this change, the following program crashes:
#include <cairo.h>
#include <cairo-svg.h>
int
main(int argc, char **argv)
{
cairo_t *cr;
cairo_surface_t *finished_surface;
finished_surface = cairo_svg_surface_create ("/tmp/xxx.svg", 1.0, 1.0);
cairo_surface_finish (finished_surface);
cr = cairo_create (finished_surface);
cairo_destroy (cr);
cairo_surface_destroy (finished_surface);
return 0;
}
Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
This commit is contained in:
parent
b9263fea14
commit
66f4140e73
1 changed files with 2 additions and 0 deletions
|
|
@ -230,6 +230,8 @@ cairo_create (cairo_surface_t *target)
|
|||
return _cairo_create_in_error (_cairo_error (CAIRO_STATUS_NULL_POINTER));
|
||||
if (unlikely (target->status))
|
||||
return _cairo_create_in_error (target->status);
|
||||
if (unlikely (target->finished))
|
||||
return _cairo_create_in_error (_cairo_error (CAIRO_STATUS_SURFACE_FINISHED));
|
||||
|
||||
if (target->backend->create_context == NULL)
|
||||
return _cairo_create_in_error (_cairo_error (CAIRO_STATUS_WRITE_ERROR));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue