diff options
author | Andrea Canciani <ranma42@gmail.com> | 2011-07-15 10:43:22 +0200 |
---|---|---|
committer | Andrea Canciani <ranma42@gmail.com> | 2011-08-14 16:06:31 +0200 |
commit | 4839c95fe9b203b4ee29221af69801679313d696 (patch) | |
tree | accb0b5e2f9cdfcbef2a0d77944a7126a5cefb61 | |
parent | 4cfef8eb3f5e97c49c01a6c25957f9e2cc103b1b (diff) |
Do not reference error objects directly
This makes it possible to observe the creation of error objects by
breaking on the appropriate _cairo_*_create_in_error() function and
makes the code cleaner by passing around the status obtained from
_cairo_error() instead of throwing the error.
-rw-r--r-- | src/cairo-beos-surface.cpp | 6 | ||||
-rw-r--r-- | src/cairo-clip.c | 6 | ||||
-rw-r--r-- | src/cairo-device.c | 3 | ||||
-rw-r--r-- | src/cairo-path.c | 15 | ||||
-rw-r--r-- | src/cairo-pattern.c | 36 | ||||
-rw-r--r-- | src/cairo-region.c | 11 | ||||
-rw-r--r-- | src/cairo-scaled-font.c | 3 | ||||
-rw-r--r-- | src/cairo-spans.c | 6 | ||||
-rw-r--r-- | src/cairo-surface.c | 3 |
9 files changed, 31 insertions, 58 deletions
diff --git a/src/cairo-beos-surface.cpp b/src/cairo-beos-surface.cpp index 2e0f42c6e..a345d485d 100644 --- a/src/cairo-beos-surface.cpp +++ b/src/cairo-beos-surface.cpp @@ -917,10 +917,8 @@ _cairo_beos_surface_create_internal (BView* view, // Must use malloc, because cairo code will use free() on the surface cairo_beos_surface_t *surface = static_cast<cairo_beos_surface_t*>( malloc(sizeof(cairo_beos_surface_t))); - if (surface == NULL) { - _cairo_error (CAIRO_STATUS_NO_MEMORY); - return const_cast<cairo_surface_t*>(&_cairo_surface_nil); - } + if (unlikely (surface == NULL)) + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); cairo_content_t content = CAIRO_CONTENT_COLOR; if (bmp && (bmp->ColorSpace() == B_RGBA32 || bmp->ColorSpace() == B_RGBA15)) diff --git a/src/cairo-clip.c b/src/cairo-clip.c index 6355a977b..f7a7e794a 100644 --- a/src/cairo-clip.c +++ b/src/cairo-clip.c @@ -610,10 +610,8 @@ _cairo_rectangle_list_create_in_error (cairo_status_t status) return (cairo_rectangle_list_t*) &_cairo_rectangles_not_representable; list = malloc (sizeof (*list)); - if (unlikely (list == NULL)) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - return (cairo_rectangle_list_t*) &_cairo_rectangles_nil; - } + if (unlikely (list == NULL)) + return _cairo_rectangle_list_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); list->status = status; list->rectangles = NULL; diff --git a/src/cairo-device.c b/src/cairo-device.c index fd1ec71de..610e57d38 100644 --- a/src/cairo-device.c +++ b/src/cairo-device.c @@ -159,8 +159,7 @@ _cairo_device_create_in_error (cairo_status_t status) case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: case CAIRO_STATUS_DEVICE_FINISHED: default: - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_device_t *) &_nil_device; + return _cairo_device_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } } diff --git a/src/cairo-path.c b/src/cairo-path.c index d3d91311f..b58e58414 100644 --- a/src/cairo-path.c +++ b/src/cairo-path.c @@ -294,10 +294,8 @@ _cairo_path_create_in_error (cairo_status_t status) return (cairo_path_t*) &_cairo_path_nil; path = malloc (sizeof (cairo_path_t)); - if (unlikely (path == NULL)) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_path_t*) &_cairo_path_nil; - } + if (unlikely (path == NULL)) + return _cairo_path_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); path->num_data = 0; path->data = NULL; @@ -314,10 +312,8 @@ _cairo_path_create_internal (cairo_path_fixed_t *path_fixed, cairo_path_t *path; path = malloc (sizeof (cairo_path_t)); - if (unlikely (path == NULL)) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_path_t*) &_cairo_path_nil; - } + if (unlikely (path == NULL)) + return _cairo_path_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); path->num_data = _cairo_path_count (path, path_fixed, cairo_get_tolerance (cr), @@ -332,8 +328,7 @@ _cairo_path_create_internal (cairo_path_fixed_t *path_fixed, sizeof (cairo_path_data_t)); if (unlikely (path->data == NULL)) { free (path); - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_path_t*) &_cairo_path_nil; + return _cairo_path_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } path->status = _cairo_path_populate (path, path_fixed, cr, flatten); diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c index cb6bba845..7a98e4f0f 100644 --- a/src/cairo-pattern.c +++ b/src/cairo-pattern.c @@ -549,10 +549,8 @@ _cairo_pattern_create_solid (const cairo_color_t *color) if (unlikely (pattern == NULL)) { /* None cached, need to create a new pattern. */ pattern = malloc (sizeof (cairo_solid_pattern_t)); - if (unlikely (pattern == NULL)) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_pattern_t *) &_cairo_pattern_nil; - } + if (unlikely (pattern == NULL)) + return _cairo_pattern_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } _cairo_pattern_init_solid (pattern, color); @@ -665,10 +663,8 @@ cairo_pattern_create_for_surface (cairo_surface_t *surface) { cairo_surface_pattern_t *pattern; - if (surface == NULL) { - _cairo_error_throw (CAIRO_STATUS_NULL_POINTER); - return (cairo_pattern_t*) &_cairo_pattern_nil_null_pointer; - } + if (unlikely (surface == NULL)) + return _cairo_pattern_create_in_error (_cairo_error (CAIRO_STATUS_NULL_POINTER)); if (surface->status) return _cairo_pattern_create_in_error (surface->status); @@ -677,10 +673,8 @@ cairo_pattern_create_for_surface (cairo_surface_t *surface) _freed_pool_get (&freed_pattern_pool[CAIRO_PATTERN_TYPE_SURFACE]); if (unlikely (pattern == NULL)) { pattern = malloc (sizeof (cairo_surface_pattern_t)); - if (unlikely (pattern == NULL)) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_pattern_t *)&_cairo_pattern_nil.base; - } + if (unlikely (pattern == NULL)) + return _cairo_pattern_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } CAIRO_MUTEX_INITIALIZE (); @@ -727,10 +721,8 @@ cairo_pattern_create_linear (double x0, double y0, double x1, double y1) _freed_pool_get (&freed_pattern_pool[CAIRO_PATTERN_TYPE_LINEAR]); if (unlikely (pattern == NULL)) { pattern = malloc (sizeof (cairo_linear_pattern_t)); - if (unlikely (pattern == NULL)) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_pattern_t *) &_cairo_pattern_nil.base; - } + if (unlikely (pattern == NULL)) + return _cairo_pattern_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } CAIRO_MUTEX_INITIALIZE (); @@ -779,10 +771,8 @@ cairo_pattern_create_radial (double cx0, double cy0, double radius0, _freed_pool_get (&freed_pattern_pool[CAIRO_PATTERN_TYPE_RADIAL]); if (unlikely (pattern == NULL)) { pattern = malloc (sizeof (cairo_radial_pattern_t)); - if (unlikely (pattern == NULL)) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_pattern_t *) &_cairo_pattern_nil.base; - } + if (unlikely (pattern == NULL)) + return _cairo_pattern_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } CAIRO_MUTEX_INITIALIZE (); @@ -957,10 +947,8 @@ cairo_pattern_create_mesh (void) _freed_pool_get (&freed_pattern_pool[CAIRO_PATTERN_TYPE_MESH]); if (unlikely (pattern == NULL)) { pattern = malloc (sizeof (cairo_mesh_pattern_t)); - if (unlikely (pattern == NULL)) { - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_pattern_t *) &_cairo_pattern_nil.base; - } + if (unlikely (pattern == NULL)) + return _cairo_pattern_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } CAIRO_MUTEX_INITIALIZE (); diff --git a/src/cairo-region.c b/src/cairo-region.c index f3ccb898a..3dced6cf2 100644 --- a/src/cairo-region.c +++ b/src/cairo-region.c @@ -107,8 +107,7 @@ _cairo_region_create_in_error (cairo_status_t status) case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: case CAIRO_STATUS_DEVICE_FINISHED: default: - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_region_t *) &_cairo_region_nil; + return _cairo_region_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } } @@ -197,7 +196,7 @@ cairo_region_create (void) region = _cairo_malloc (sizeof (cairo_region_t)); if (region == NULL) - return (cairo_region_t *) &_cairo_region_nil; + return _cairo_region_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); region->status = CAIRO_STATUS_SUCCESS; CAIRO_REFERENCE_COUNT_INIT (®ion->ref_count, 1); @@ -297,7 +296,7 @@ cairo_region_create_rectangle (const cairo_rectangle_int_t *rectangle) region = _cairo_malloc (sizeof (cairo_region_t)); if (unlikely (region == NULL)) - return (cairo_region_t *) &_cairo_region_nil; + return _cairo_region_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); region->status = CAIRO_STATUS_SUCCESS; CAIRO_REFERENCE_COUNT_INIT (®ion->ref_count, 1); @@ -330,7 +329,7 @@ cairo_region_copy (const cairo_region_t *original) cairo_region_t *copy; if (original != NULL && original->status) - return (cairo_region_t *) &_cairo_region_nil; + return _cairo_region_create_in_error (original->status); copy = cairo_region_create (); if (unlikely (copy->status)) @@ -340,7 +339,7 @@ cairo_region_copy (const cairo_region_t *original) ! pixman_region32_copy (©->rgn, CONST_CAST &original->rgn)) { cairo_region_destroy (copy); - return (cairo_region_t *) &_cairo_region_nil; + return _cairo_region_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } return copy; diff --git a/src/cairo-scaled-font.c b/src/cairo-scaled-font.c index b0afb0995..683137496 100644 --- a/src/cairo-scaled-font.c +++ b/src/cairo-scaled-font.c @@ -1120,8 +1120,7 @@ _cairo_scaled_font_create_in_error (cairo_status_t status) scaled_font = malloc (sizeof (cairo_scaled_font_t)); if (unlikely (scaled_font == NULL)) { CAIRO_MUTEX_UNLOCK (_cairo_scaled_font_error_mutex); - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_scaled_font_t *) &_cairo_scaled_font_nil; + return _cairo_scaled_font_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } *scaled_font = _cairo_scaled_font_nil; diff --git a/src/cairo-spans.c b/src/cairo-spans.c index f6586506b..c39f63e26 100644 --- a/src/cairo-spans.c +++ b/src/cairo-spans.c @@ -238,8 +238,7 @@ _cairo_scan_converter_create_in_error (cairo_status_t status) default: break; } - status = CAIRO_STATUS_NO_MEMORY; - RETURN_NIL; + return _cairo_scan_converter_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); #undef RETURN_NIL } @@ -350,7 +349,6 @@ _cairo_span_renderer_create_in_error (cairo_status_t status) default: break; } - status = CAIRO_STATUS_NO_MEMORY; - RETURN_NIL; + return _cairo_span_renderer_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); #undef RETURN_NIL } diff --git a/src/cairo-surface.c b/src/cairo-surface.c index 2512d8dc9..6a1641afd 100644 --- a/src/cairo-surface.c +++ b/src/cairo-surface.c @@ -3246,8 +3246,7 @@ _cairo_surface_create_in_error (cairo_status_t status) case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: case CAIRO_STATUS_DEVICE_FINISHED: default: - _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); - return (cairo_surface_t *) &_cairo_surface_nil; + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } } |