diff options
author | Søren Sandmann Pedersen <sandmann@redhat.com> | 2009-12-11 11:14:19 -0500 |
---|---|---|
committer | Søren Sandmann Pedersen <sandmann@redhat.com> | 2009-12-15 11:30:34 -0500 |
commit | ec6de472d042bec05aaa53f9d14bfbe23edbe01e (patch) | |
tree | 73c70189fca7008ebf9ff88450cc038e36988e43 | |
parent | f1ecbaba0c5886dd1c099de3496d595ad1513a49 (diff) |
region: Enable or disable fatal errors and selfchecks based on version number
There is a couple of bugs in bugzilla where bugs in the X server
triggered asserts in the pixman region code. It is probably better to
let the X server survive this. (In fact, I thought I had disabled them
for 0.16.0, but apparently not).
The patch below uses these rules:
- In _stable_ pixman releases, assertions and selfchecks are turned
off. Assertions, so that the X server doesn't die. Selfchecks,
for performance reasons.
- In _unstable_ pixman releases, both assertions and selfcheck are
turned on. These releases are what get added to development
distributions such as rawhide, so we want as much self-checking
as possible.
- In _random git checkouts_, assertions are enabled, so that bugs
are caught, but selfchecks are disabled so that you can use them
for performance work without having to fiddle with turning
selfchecks off.
-rw-r--r-- | pixman/pixman-region.c | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/pixman/pixman-region.c b/pixman/pixman-region.c index f88955f..8ce5deb 100644 --- a/pixman/pixman-region.c +++ b/pixman/pixman-region.c @@ -66,9 +66,44 @@ #define GOOD_RECT(rect) ((rect)->x1 < (rect)->x2 && (rect)->y1 < (rect)->y2) #define BAD_RECT(rect) ((rect)->x1 > (rect)->x2 || (rect)->y1 > (rect)->y2) -#define noPIXMAN_REGION_LOG_FAILURES +/* Turn on debugging depending on what type of release this is + */ -#if defined PIXMAN_REGION_LOG_FAILURES || defined PIXMAN_REGION_DEBUG +#if ((PIXMAN_VERSION_MICRO % 2) == 1) +/* Random git checkout. + * + * Those are often used for performance work, so we don't turn on the + * full self-checking, but we do turn on the asserts. + */ +# define FATAL_BUGS +# define noSELF_CHECKS +#elif ((PIXMAN_VERSION_MINOR % 2) == 0) +/* Stable release. + * + * We don't want assertions because the X server should stay alive + * if possible. We also don't want self-checks for performance-reasons. + */ +# define noFATAL_BUGS +# define noSELF_CHECKS +#else +/* Development snapshot. + * + * These are the things that get shipped in development distributions + * such as Rawhide. We want both self-checking and fatal assertions + * to catch as many bugs as possible. + */ +# define FATAL_BUGS +# define SELF_CHECKS +#endif + +#ifndef FATAL_BUGS +# undef assert +# undef abort +# define assert(expr) +# define abort() +#endif + +#ifdef SELF_CHECKS static void log_region_error (const char *function, const char *message) @@ -83,9 +118,7 @@ log_region_error (const char *function, const char *message) "Set a breakpoint on 'log_region_error' to debug\n\n", function, message); -#if defined PIXMAN_REGION_DEBUG - abort (); -#endif + abort (); /* This is #defined away unless FATAL_BUGS is defined */ n_messages++; } |