diff options
author | Andrea Canciani <ranma42@gmail.com> | 2011-03-17 09:27:02 +0100 |
---|---|---|
committer | Andrea Canciani <ranma42@gmail.com> | 2011-03-17 17:35:28 +0100 |
commit | 4ef32a36ba1e457e8dd6244a6483866d33477aac (patch) | |
tree | 9bce70969ea3ddcfb86bc444814e6d144a79e031 | |
parent | d6efb2a0b78ec8c3cc520e7a1ddebc8a5c5dc706 (diff) |
test: Silence gcc warnings
warning: cannot optimize possibly infinite loops
gcc does not detect that the "infinite" loops are actually just one or
two iterations, depending on the has_similar value being FALSE or
TRUE. It realizes it if the iteration variable and the iteration stop
value are both enum values.
-rw-r--r-- | test/cairo-test-private.h | 7 | ||||
-rw-r--r-- | test/cairo-test-runner.c | 8 | ||||
-rw-r--r-- | test/cairo-test.c | 19 |
3 files changed, 21 insertions, 13 deletions
diff --git a/test/cairo-test-private.h b/test/cairo-test-private.h index 8c841493b..e89eb70a2 100644 --- a/test/cairo-test-private.h +++ b/test/cairo-test-private.h @@ -36,7 +36,12 @@ CAIRO_BEGIN_DECLS -cairo_bool_t +typedef enum { + DIRECT, + SIMILAR +} cairo_test_similar_t; + +cairo_test_similar_t cairo_test_target_has_similar (const cairo_test_context_t *ctx, const cairo_boilerplate_target_t *target); diff --git a/test/cairo-test-runner.c b/test/cairo-test-runner.c index c5d09456a..87c6db0ab 100644 --- a/test/cairo-test-runner.c +++ b/test/cairo-test-runner.c @@ -909,18 +909,18 @@ main (int argc, char **argv) target_error = FALSE, target_crashed = FALSE, target_skipped = TRUE; - int has_similar; + cairo_test_similar_t has_similar; target = ctx.targets_to_test[n]; has_similar = runner.full_test ? cairo_test_target_has_similar (&ctx, target) : - 0; + DIRECT; for (m = 0; m < runner.num_device_offsets; m++) { int dev_offset = m * 25; - int similar; + cairo_test_similar_t similar; - for (similar = 0; similar <= has_similar; similar++) { + for (similar = DIRECT; similar <= has_similar; similar++) { status = _cairo_test_runner_draw (&runner, &ctx, target, similar, dev_offset); switch (status) { diff --git a/test/cairo-test.c b/test/cairo-test.c index 69af6ba8a..e03f9f71d 100644 --- a/test/cairo-test.c +++ b/test/cairo-test.c @@ -454,12 +454,12 @@ _cairo_test_mkdir (const char *path) return errno == EEXIST; } -cairo_bool_t +cairo_test_similar_t cairo_test_target_has_similar (const cairo_test_context_t *ctx, const cairo_boilerplate_target_t *target) { cairo_surface_t *surface; - cairo_bool_t has_similar; + cairo_test_similar_t has_similar; cairo_t * cr; cairo_surface_t *similar; cairo_status_t status; @@ -468,16 +468,16 @@ cairo_test_target_has_similar (const cairo_test_context_t *ctx, /* ignore image intermediate targets */ if (target->expected_type == CAIRO_SURFACE_TYPE_IMAGE) - return FALSE; + return DIRECT; if (getenv ("CAIRO_TEST_IGNORE_SIMILAR")) - return FALSE; + return DIRECT; xasprintf (&path, "%s/%s", _cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : ".", ctx->test_name); - has_similar = FALSE; + has_similar = DIRECT; do { do { surface = (target->create_surface) (path, @@ -502,7 +502,10 @@ cairo_test_target_has_similar (const cairo_test_context_t *ctx, similar = cairo_get_group_target (cr); status = cairo_surface_status (similar); - has_similar = cairo_surface_get_type (similar) == cairo_surface_get_type (surface); + if (cairo_surface_get_type (similar) == cairo_surface_get_type (surface)) + has_similar = SIMILAR; + else + has_similar = DIRECT; cairo_destroy (cr); cairo_surface_destroy (surface); @@ -1813,10 +1816,10 @@ _cairo_test_context_run (cairo_test_context_t *ctx) for (j = 0; j < NUM_DEVICE_OFFSETS; j++) { int dev_offset = ((j + ctx->thread) % NUM_DEVICE_OFFSETS) * 25; - int similar, has_similar; + cairo_test_similar_t similar, has_similar; has_similar = cairo_test_target_has_similar (ctx, target); - for (similar = 0; similar <= has_similar ; similar++) { + for (similar = DIRECT; similar <= has_similar; similar++) { cairo_status_t status; status = _cairo_test_context_run_for_target (ctx, |