summaryrefslogtreecommitdiff
path: root/boilerplate/cairo-boilerplate.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-03-30 16:50:10 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2009-03-31 12:16:01 +0100
commitb580a4a8d6c056ba8b47be32ea8c5b9a1d90d01e (patch)
treedea1753ffe6f6f388b9a0fbdb0d7f6710471f2f1 /boilerplate/cairo-boilerplate.c
parent80d5b53b474c94219c51ae16dcc19098a2d86165 (diff)
downloadcairo-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.c16
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);