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));