From de1f92ae14bfc4d74d8df88ae81d7b90dd6739f0 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 4 Oct 2007 14:51:16 +0100 Subject: [PATCH] [cairo-output-stream] Propagate error status when copying streams. During _cairo_memory_stream_copy(), if set, copy the incoming error over to the destination stream and return early. --- src/cairo-output-stream.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/cairo-output-stream.c b/src/cairo-output-stream.c index 791c0f22b..323bd0645 100644 --- a/src/cairo-output-stream.c +++ b/src/cairo-output-stream.c @@ -46,7 +46,7 @@ #endif /* _MSC_VER */ -cairo_private void +void _cairo_output_stream_init (cairo_output_stream_t *stream, cairo_output_stream_write_func_t write_func, cairo_output_stream_close_func_t close_func) @@ -58,7 +58,7 @@ _cairo_output_stream_init (cairo_output_stream_t *stream, stream->closed = FALSE; } -cairo_private cairo_status_t +cairo_status_t _cairo_output_stream_fini (cairo_output_stream_t *stream) { return _cairo_output_stream_close (stream); @@ -560,6 +560,14 @@ _cairo_memory_stream_copy (cairo_output_stream_t *base, { memory_stream_t *stream = (memory_stream_t *) base; + if (dest->status) + return; + + if (base->status) { + dest->status = base->status; + return; + } + _cairo_output_stream_write (dest, _cairo_array_index (&stream->array, 0), _cairo_array_num_elements (&stream->array));