summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <sandmann@redhat.com>2009-12-11 11:14:19 -0500
committerSøren Sandmann Pedersen <sandmann@redhat.com>2009-12-15 11:30:34 -0500
commitec6de472d042bec05aaa53f9d14bfbe23edbe01e (patch)
tree73c70189fca7008ebf9ff88450cc038e36988e43
parentf1ecbaba0c5886dd1c099de3496d595ad1513a49 (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.c43
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++;
}