diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2009-03-30 16:50:10 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2009-03-31 12:16:01 +0100 |
commit | b580a4a8d6c056ba8b47be32ea8c5b9a1d90d01e (patch) | |
tree | dea1753ffe6f6f388b9a0fbdb0d7f6710471f2f1 /boilerplate/cairo-boilerplate.c | |
parent | 80d5b53b474c94219c51ae16dcc19098a2d86165 (diff) | |
download | cairo-b580a4a8d6c056ba8b47be32ea8c5b9a1d90d01e.tar.gz |
[test] Improve fault injection coverage
In order to exercise the meta-surfaces, we need to inject faults into
cairo_surface_finish().
Diffstat (limited to 'boilerplate/cairo-boilerplate.c')
-rw-r--r-- | boilerplate/cairo-boilerplate.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/boilerplate/cairo-boilerplate.c b/boilerplate/cairo-boilerplate.c index b6c2c80bc..fcc05b877 100644 --- a/boilerplate/cairo-boilerplate.c +++ b/boilerplate/cairo-boilerplate.c @@ -76,6 +76,7 @@ #include <stdlib.h> #include <ctype.h> #include <assert.h> +#include <errno.h> #if HAVE_UNISTD_H && HAVE_FCNTL_H && HAVE_SIGNAL_H && HAVE_SYS_STAT_H && HAVE_SYS_SOCKET_H && HAVE_SYS_UN_H #include <unistd.h> @@ -170,6 +171,9 @@ _cairo_boilerplate_get_image_surface (cairo_surface_t *src, cairo_surface_t *surface; cairo_t *cr; + if (cairo_surface_status (src)) + return cairo_surface_reference (src); + #if 0 if (cairo_surface_get_type (src) == CAIRO_SURFACE_TYPE_IMAGE) { int ww = cairo_image_surface_get_width (src); @@ -973,7 +977,7 @@ cairo_boilerplate_image_surface_create_from_ppm_stream (FILE *file) goto FAIL; } if (cairo_surface_status (image)) - goto FAIL; + return image; data = cairo_image_surface_get_data (image); stride = cairo_image_surface_get_stride (image); @@ -1017,8 +1021,14 @@ cairo_boilerplate_convert_to_image (const char *filename, int page) RETRY: file = cairo_boilerplate_open_any2ppm (filename, page, flags); - if (file == NULL) - return cairo_boilerplate_surface_create_in_error (CAIRO_STATUS_READ_ERROR); + if (file == NULL) { + switch (errno) { + case ENOMEM: + return cairo_boilerplate_surface_create_in_error (CAIRO_STATUS_NO_MEMORY); + default: + return cairo_boilerplate_surface_create_in_error (CAIRO_STATUS_READ_ERROR); + } + } image = cairo_boilerplate_image_surface_create_from_ppm_stream (file); ret = pclose (file); |