Commit graph

1941 commits

Author SHA1 Message Date
Chris Wilson
b4cb0306b4 cairo-type1-fallback - propagate error returns
Add status returns in order to propagate a matrix inversion failure
up through the call stack.
2007-04-09 16:06:51 -07:00
Chris Wilson
b29d78dda1 cairo-svg-surface - propagate some error returns
Add status returns to functions in order to propagate an error up
the call stack.

For the emit_*_pattern we add a new status return even when when
the functon return CAIRO_STATUS_SUCCESS unconditionally in order for
the caller to handle all cases in a consistent manner.
2007-04-09 16:05:30 -07:00
Chris Wilson
3f7ca6ef5b cairo-pen - cairo_pen_init() can fail propagate its error.
Add status returns in order to propagate an intialisation failure
back up the call chain.
2007-04-09 15:51:31 -07:00
Chris Wilson
67f13b3518 cairo-bentley-ottmann/skip-list - catch and propagate out-of-memory errors
The skip list inserts could return NULL indicating an out-of-memory error.
In order to handle this, propagate the error up the call stack.
2007-04-09 15:12:15 +01:00
Chris Wilson
293122279f cairo-path-stroke - add trivial missing status checks
Propagate the error status.
2007-04-09 15:11:47 +01:00
Chris Wilson
79424fc646 cairo - add missing status checks
Add a few missing status checks and set the error on the context when
applicable.
2007-04-09 15:08:29 +01:00
Chris Wilson
a34a32fd99 cairo-type1-fallback - check for an error during cleanup
The cleanup path is shared between the error path and the true path, and
so any error along it can not be ignored.
2007-04-09 15:07:27 +01:00
Chris Wilson
d2efadc84d cairo-svg-surface - propagate error returns
Add a couple of missing checks for error statues.
2007-04-09 15:07:10 +01:00
Chris Wilson
02264b40f5 cairo-surface-fallback - propagate error returns
_cairo_surface_composite() can fail so check for and error return and
propagate.
2007-04-09 15:06:49 +01:00
Chris Wilson
76b27fb0e8 cairo-ps-surface - add a couple of status checks
Handle a couple more error returns.
2007-04-09 15:06:25 +01:00
Chris Wilson
619425a8b3 cairo-polygon - trivial propagation of error status
_cairo_polygon_move_to() returns an error status so use it.
2007-04-09 15:06:11 +01:00
Chris Wilson
4b195779a4 cairo-pen - trivial propagation of error status
Add a couple of missing checks for error statuses and correct the
error path cleanup for _cairo_pen_stroke_spline().
2007-04-09 15:05:58 +01:00
Chris Wilson
66d3e25202 cairo-pdf-surface - propagate error status
Catch and propagate any error status.
2007-04-09 15:05:45 +01:00
Chris Wilson
b32a5b1dc6 cairo-pattern - propagate status
Catch, cleanup and propagate after an error return.
2007-04-09 15:05:35 +01:00
Chris Wilson
fd49bbb4b2 cairo-path - check for failure during _cairo_path_fixed_interpret
Catch an error return from _cairo_path_fixed_interpret() and return
it. Similary check for an error code in cairo_status() before returning
success.
2007-04-09 15:05:24 +01:00
Chris Wilson
814830f63b cairo-path-fill - trivial missing unused result
Actually assign the result that is tested on the next line...
2007-04-09 15:05:13 +01:00
Chris Wilson
7ab1f62c60 cairo-paginated-surface - fix up the trivial unused result
Check for status returns and propagate, cleaning up as necessary.
2007-04-09 15:04:58 +01:00
Chris Wilson
78c0d62ba7 cairo-meta-surface - propagate trivial status return
_cairo_path_fixed_init_copy() could fail so propagate it's status.
2007-04-09 15:04:47 +01:00
Chris Wilson
75cc5e04d5 cairo-image-surface - propagate error returns from pixman.
pixman does occasionally return an error - in such circumstances we
should propagate it.
2007-04-09 15:04:30 +01:00
Chris Wilson
dee9a53029 cairo-gstate - fix the trivial unchecked returns
Check for an error return and propagate.
2007-04-09 15:04:17 +01:00
Chris Wilson
de264af2c6 cairo-ft-font - handle trivial failures
Catch the status return, cleanup and propagate the error.
2007-04-09 15:03:59 +01:00
Chris Wilson
14c8dfb0b9 cairo-clip - handle trivial pixman failures
Detect the simple cases when pixman returns an error, ie an OOM
condition, and propagate the error status.
2007-04-09 15:03:34 +01:00
Chris Wilson
46eab95698 Add attribute(warn_unused_result)
This adds a compiler check that the function result is used by the caller
and enables it by default for all cairo_private functions and for public
API that returns a cairo_status_t.

It has been discussed that to extend the warnings to all functions, a
new function type could been introduced to cover static functions:
cairo_static. This has not been done at the present time in order to
minimise the churn and focus on the more common errors.

In order to reduce the warning spew generated by gcc for invalid use of
this attribute, -Wno-attributes is added to CFLAGS. This has the
unfortunate side-effect of masking future warnings for all attributes -
be warned!
2007-04-09 15:01:58 +01:00
Behdad Esfahbod
9da86e4a38 Add references to the skiplist paper 2007-04-08 22:56:30 -04:00
Behdad Esfahbod
ad0e13805c [cairo-skiplist] Clarify MAX_LEVEL in comment, and adjust accordingly
Reading the code, MAX_LEVEL is in fact what could have been named
MAX_NUM_LEVELS.  That is, it is maximum possible level plus one.
All code is correct: it uses MAX_LEVEL as array size and never produces
a level of MAX_LEVEL.  The comment is fixed.
2007-04-08 22:51:10 -04:00
Behdad Esfahbod
6f93092217 Rename pixman_region_uninit to pixman_region_fini 2007-04-08 22:03:38 -04:00
Mathias Hasselmann
df9ea31df5 [pixman-region] Separate pixman_region_init
Most of the time pixman_region_init is called without any extents, and
followed by a pixman_region_union_rect, used to used to initialize
rectangular regions. pixman_region_union_rect is not that cheap, but
the sequence is called quite often. So it should be worth introducing
a specialized and fast function for this sequence.

This introduces pixman_region_init_rect.  This new function makes
_cairo_region_init_from_rectangle obsolete.

Also removes the extent argument from pixman_region_init as it was
called with NULL most of the time.  A pixman_region_init_with_extents
is added for the general case.
2007-04-08 21:49:46 -04:00
Mathias Hasselmann
f9057f2752 Avoid pixman_create_region in glitz-surface 2007-04-08 21:24:35 -04:00
Mathias Hasselmann
82cbb6886c Remove redundant _cairo_clip_fini function 2007-04-08 21:23:47 -04:00
Mathias Hasselmann
5ae309c456 Avoid pixman_region_create in _cairo_traps_extract_region 2007-04-08 21:23:13 -04:00
Mathias Hasselmann
241482b550 Avoid malloc in _cairo_region_create_from_rectangle 2007-04-08 21:12:02 -04:00
Mathias Hasselmann
efc9775149 Make sure clip->region is always initialized 2007-04-08 21:10:58 -04:00
Mathias Hasselmann
0e7df34e07 Make region of cairo_clip_t static 2007-04-08 21:10:12 -04:00
Chris Wilson
8bb0e5939c _get_bitmap_surface - check for calloc failure 2007-04-06 12:34:17 -07:00
Chris Wilson
2a74fd5c7f Propagate one error return through pdf. 2007-04-06 11:50:00 -07:00
Robert O'Callahan
d801aa59f8 [quartz] fix floating point precision issue (#10531)
This ensures that error due to double-to-float conversion
does not accumulate; the position of any glyph will be off by
at most one double-to-float conversion error.
2007-04-06 00:00:33 +01:00
Carl Worth
106f859045 Move misplaced CLEANUP_FONT label to avoid crash.
Previously, a failure in _cairo_win32_scaled_font_init_glyph_path leading
to the CLEANUP_FONT label would set the path into the glyph, then destroy
the path, and return an error status, (which in turn would cause a double
free when the glyph was destroyed).

The double-free apparently leads to a crash in some cases, as described
here:

	 SVG/Cairo related crash when opening specific webpage
	https://bugzilla.mozilla.org/show_bug.cgi?id=376498

This should eliminate the double-free, but does not address the original
error case, (attempting to get a path from a bitmap font?).
2007-04-05 14:44:15 -07:00
Chris Wilson
5c24711ee6 Restore gcov functionality
Add -lgcov to the shared library else the test programs fail to link.
Add a couple of lcov convenience targets to generate the coverage reports.
2007-04-04 10:13:13 +01:00
Behdad Esfahbod
a1287e483c [pixman/src/check-config.sh] Test that all source files #include <config.h>
as their first include.
2007-04-03 20:30:30 -04:00
Behdad Esfahbod
8fbf50d31d [src] Make sure all source files #include "cairoint.h" as their first include
This is necessary to avoid many portability problems as cairoint.h includes
config.h.  Without a test, we will regress again, hence add it.

The inclusion idiom for cairo now is:

	#include "cairoint.h"

	#include "cairo-something.h"
	#include "cairo-anotherthing-private.h"

	#include <some-library.h>
	#include <other-library/other-file.h>

Moreover, some standard headers files are included from cairoint.h and need
not be included again.
2007-04-03 20:28:11 -04:00
Behdad Esfahbod
ffc7d06da0 [src/check-cairoint.h] Test to check that all source files #include "cairoint.h"
as their first include.
2007-04-03 20:27:24 -04:00
Behdad Esfahbod
208c32b245 [cairoint.h] Remove inline definition for MS compilers
Such things should go to config.h.  For one thing, cairoint.h is not
included in pixman.
2007-04-03 20:02:40 -04:00
Behdad Esfahbod
88dc0c5f19 Make sure all nil objects start with _cairo_
Previously, the convention was that static ones started with cairo_, but
renamed to start with _cairo_ when they were needed from other files and
became cairo_private instead of static...

This is error prune indeed, and two symbols were already violating.  Now
all nil objects start with _cairo_.
2007-04-03 19:26:18 -04:00
Benjamin Berg
c2b1908f9b Fix typo in cairo_arc_negative() docs (#10497) 2007-04-03 15:46:51 -04:00
Chris Wilson
256f3e09a8 Destroy the current pattern before replacing with cairo_set_source().
Frequently cairo_set_source_rgb[a]() is used to replace the current
solid-pattern source with a new one of a different colour. The current
pattern is very likely to be unshared and unmodified and so it is likely
just to be immediately freed [or rather simply moved to recently freed
cache]. However as the last active pattern it is likely to cache-warm and
suitable to satisfy the forthcoming allocation. So by setting the current
pattern to 'none' we can move the pattern to the freed list before we
create the new pattern and hopefully immediately reuse it.
2007-03-26 20:58:14 +01:00
Chris Wilson
38442d4948 Back out the solid-pattern-cache from 9b53bc7c65.
Unfortunately one cannot cache live patterns and return a fresh reference
instead of creating new ones as patterns can be modified by the user and
so cannot be transparently shared between different users. However,
solid colour allocation is still a frequent operation, so we maintain a
small cache of recently freed patterns to reduce the malloc pressure.
2007-03-26 20:57:53 +01:00
Brian Ewins
c8e37af4b0 [quartz] fix order of fields in matrix conversion
There was a typo flipping the xy and yx fields when a 
cairo matrix was converted to a quartz matrix.
2007-03-25 23:31:40 +01:00
Brian Ewins
d2cdd5eba8 [atsui] fix scaling of glyph surfaces (#9568)
Atsui glyph surface were clipped incorrectly when the text is scaled,
visible in the text-pattern test.
2007-03-24 13:25:03 +00:00
Adrian Johnson
25ddc08004 PS: Remove unused variable 2007-03-23 23:19:30 +10:30
Adrian Johnson
e9a2696648 PDF: Use the TJ operator to show glyphs 2007-03-23 23:08:46 +10:30