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.
This commit is contained in:
Søren Sandmann Pedersen 2009-12-11 11:14:19 -05:00
parent f1ecbaba0c
commit ec6de472d0

View File

@ -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++;
}