summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Canciani <ranma42@gmail.com>2011-07-15 10:02:50 +0200
committerAndrea Canciani <ranma42@gmail.com>2011-08-14 16:06:31 +0200
commit79bd4df84c9158759e6a060de2b587479017d3c5 (patch)
tree9387a240551695dac0c0b734735db5c32e2a528d
parent45cd2ee7358956ae1b7764ad89c1e8d414504572 (diff)
stream: Do not reference error output streams directly
This makes it possible to observe the creation of cairo_output_stream_t error objects by breaking on _cairo_output_stream_create_in_error() and makes the code cleaner by passing around the status obtained from _cairo_error() instead of throwing the error.
-rw-r--r--src/cairo-base64-stream.c6
-rw-r--r--src/cairo-base85-stream.c6
-rw-r--r--src/cairo-deflate-stream.c8
-rw-r--r--src/cairo-output-stream-private.h2
-rw-r--r--src/cairo-output-stream.c47
-rw-r--r--src/cairo-pdf-operators.c6
-rw-r--r--src/cairo-ps-surface.c12
7 files changed, 29 insertions, 58 deletions
diff --git a/src/cairo-base64-stream.c b/src/cairo-base64-stream.c
index 636431372..2732fb3ac 100644
--- a/src/cairo-base64-stream.c
+++ b/src/cairo-base64-stream.c
@@ -126,10 +126,8 @@ _cairo_base64_stream_create (cairo_output_stream_t *output)
return _cairo_output_stream_create_in_error (output->status);
stream = malloc (sizeof (cairo_base64_stream_t));
- if (unlikely (stream == NULL)) {
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
- }
+ if (unlikely (stream == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
_cairo_output_stream_init (&stream->base,
_cairo_base64_stream_write,
diff --git a/src/cairo-base85-stream.c b/src/cairo-base85-stream.c
index f81affb49..d04a4f588 100644
--- a/src/cairo-base85-stream.c
+++ b/src/cairo-base85-stream.c
@@ -115,10 +115,8 @@ _cairo_base85_stream_create (cairo_output_stream_t *output)
return _cairo_output_stream_create_in_error (output->status);
stream = malloc (sizeof (cairo_base85_stream_t));
- if (unlikely (stream == NULL)) {
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
- }
+ if (unlikely (stream == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
_cairo_output_stream_init (&stream->base,
_cairo_base85_stream_write,
diff --git a/src/cairo-deflate-stream.c b/src/cairo-deflate-stream.c
index ae23bda94..aa6a52f72 100644
--- a/src/cairo-deflate-stream.c
+++ b/src/cairo-deflate-stream.c
@@ -125,10 +125,8 @@ _cairo_deflate_stream_create (cairo_output_stream_t *output)
return _cairo_output_stream_create_in_error (output->status);
stream = malloc (sizeof (cairo_deflate_stream_t));
- if (unlikely (stream == NULL)) {
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
- }
+ if (unlikely (stream == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
_cairo_output_stream_init (&stream->base,
_cairo_deflate_stream_write,
@@ -142,7 +140,7 @@ _cairo_deflate_stream_create (cairo_output_stream_t *output)
if (deflateInit (&stream->zlib_stream, Z_DEFAULT_COMPRESSION) != Z_OK) {
free (stream);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
}
stream->zlib_stream.next_in = stream->input_buf;
diff --git a/src/cairo-output-stream-private.h b/src/cairo-output-stream-private.h
index edaabbe78..ea5b1da8f 100644
--- a/src/cairo-output-stream-private.h
+++ b/src/cairo-output-stream-private.h
@@ -63,8 +63,6 @@ struct _cairo_output_stream {
cairo_bool_t closed;
};
-extern const cairo_private cairo_output_stream_t _cairo_output_stream_nil;
-
cairo_private void
_cairo_output_stream_init (cairo_output_stream_t *stream,
cairo_output_stream_write_func_t write_func,
diff --git a/src/cairo-output-stream.c b/src/cairo-output-stream.c
index 0adda365c..554214f9e 100644
--- a/src/cairo-output-stream.c
+++ b/src/cairo-output-stream.c
@@ -87,7 +87,7 @@ _cairo_output_stream_fini (cairo_output_stream_t *stream)
return _cairo_output_stream_close (stream);
}
-const cairo_output_stream_t _cairo_output_stream_nil = {
+static const cairo_output_stream_t _cairo_output_stream_nil = {
NULL, /* write_func */
NULL, /* flush_func */
NULL, /* close_func */
@@ -147,10 +147,8 @@ _cairo_output_stream_create (cairo_write_func_t write_func,
cairo_output_stream_with_closure_t *stream;
stream = malloc (sizeof (cairo_output_stream_with_closure_t));
- if (unlikely (stream == NULL)) {
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
- }
+ if (unlikely (stream == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
_cairo_output_stream_init (&stream->base,
closure_write, NULL, closure_close);
@@ -173,10 +171,8 @@ _cairo_output_stream_create_in_error (cairo_status_t status)
return (cairo_output_stream_t *) &_cairo_output_stream_nil_write_error;
stream = malloc (sizeof (cairo_output_stream_t));
- if (unlikely (stream == NULL)) {
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
- }
+ if (unlikely (stream == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
_cairo_output_stream_init (stream, NULL, NULL, NULL);
stream->status = status;
@@ -592,16 +588,12 @@ _cairo_output_stream_create_for_file (FILE *file)
{
stdio_stream_t *stream;
- if (file == NULL) {
- _cairo_error_throw (CAIRO_STATUS_WRITE_ERROR);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil_write_error;
- }
+ if (unlikely (file == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_WRITE_ERROR));
stream = malloc (sizeof *stream);
- if (unlikely (stream == NULL)) {
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
- }
+ if (unlikely (stream == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
_cairo_output_stream_init (&stream->base,
stdio_write, stdio_flush, stdio_flush);
@@ -623,19 +615,16 @@ _cairo_output_stream_create_for_filename (const char *filename)
if (file == NULL) {
switch (errno) {
case ENOMEM:
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
default:
- _cairo_error_throw (CAIRO_STATUS_WRITE_ERROR);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil_write_error;
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_WRITE_ERROR));
}
}
stream = malloc (sizeof *stream);
if (unlikely (stream == NULL)) {
fclose (file);
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
}
_cairo_output_stream_init (&stream->base,
@@ -676,10 +665,8 @@ _cairo_memory_stream_create (void)
memory_stream_t *stream;
stream = malloc (sizeof *stream);
- if (unlikely (stream == NULL)) {
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
- }
+ if (unlikely (stream == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
_cairo_output_stream_init (&stream->base, memory_write, NULL, memory_close);
_cairo_array_init (&stream->array, 1);
@@ -753,10 +740,8 @@ _cairo_null_stream_create (void)
cairo_output_stream_t *stream;
stream = malloc (sizeof *stream);
- if (unlikely (stream == NULL)) {
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
- }
+ if (unlikely (stream == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
_cairo_output_stream_init (stream, null_write, NULL, NULL);
diff --git a/src/cairo-pdf-operators.c b/src/cairo-pdf-operators.c
index 58c647219..c4e4343b8 100644
--- a/src/cairo-pdf-operators.c
+++ b/src/cairo-pdf-operators.c
@@ -356,10 +356,8 @@ _word_wrap_stream_create (cairo_output_stream_t *output, int max_column)
return _cairo_output_stream_create_in_error (output->status);
stream = malloc (sizeof (word_wrap_stream_t));
- if (unlikely (stream == NULL)) {
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
- }
+ if (unlikely (stream == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
_cairo_output_stream_init (&stream->base,
_word_wrap_stream_write,
diff --git a/src/cairo-ps-surface.c b/src/cairo-ps-surface.c
index 96f5bcf2c..2e4f52c03 100644
--- a/src/cairo-ps-surface.c
+++ b/src/cairo-ps-surface.c
@@ -1952,10 +1952,8 @@ _string_array_stream_create (cairo_output_stream_t *output)
string_array_stream_t *stream;
stream = malloc (sizeof (string_array_stream_t));
- if (unlikely (stream == NULL)) {
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
- }
+ if (unlikely (stream == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
_cairo_output_stream_init (&stream->base,
_string_array_stream_write,
@@ -1979,10 +1977,8 @@ _base85_array_stream_create (cairo_output_stream_t *output)
string_array_stream_t *stream;
stream = malloc (sizeof (string_array_stream_t));
- if (unlikely (stream == NULL)) {
- _cairo_error_throw (CAIRO_STATUS_NO_MEMORY);
- return (cairo_output_stream_t *) &_cairo_output_stream_nil;
- }
+ if (unlikely (stream == NULL))
+ return _cairo_output_stream_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY));
_cairo_output_stream_init (&stream->base,
_string_array_stream_write,