diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2018-04-29 21:56:27 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2018-04-29 21:56:27 -0400 |
commit | c5e46c7c3b9333616de9946f8e63df1576a19800 (patch) | |
tree | ad64ec6765b34d2d579d81445d4d84134b7ebf92 /src | |
parent | eb16011f4c08a8c2ddfbf0637b862ee1918dd9b2 (diff) | |
download | postgresql-c5e46c7c3b9333616de9946f8e63df1576a19800.tar.gz postgresql-c5e46c7c3b9333616de9946f8e63df1576a19800.zip |
Fix bogus list-iteration code in pg_regress.c, affecting ecpg tests only.
While looking at a recent buildfarm failure in the ecpg tests, I wondered
why the pg_regress output claimed the stderr part of the test failed, when
the regression diffs were clearly for the stdout part. Looking into it,
the reason is that pg_regress.c's logic for iterating over three parallel
lists is wrong, and has been wrong since it was written: it advances the
"tag" pointer at a different place in the loop than the other two pointers.
Fix that.
Diffstat (limited to 'src')
-rw-r--r-- | src/test/regress/pg_regress.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index 4b24c4ac71f..2ff2acc641b 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -1752,14 +1752,11 @@ run_schedule(const char *schedule, test_function tfunc) */ for (rl = resultfiles[i], el = expectfiles[i], tl = tags[i]; rl != NULL; /* rl and el have the same length */ - rl = rl->next, el = el->next) + rl = rl->next, el = el->next, + tl = tl ? tl->next : NULL) { bool newdiff; - if (tl) - tl = tl->next; /* tl has the same length as rl and el if - * it exists */ - newdiff = results_differ(tests[i], rl->str, el->str); if (newdiff && tl) { @@ -1848,14 +1845,11 @@ run_single_test(const char *test, test_function tfunc) */ for (rl = resultfiles, el = expectfiles, tl = tags; rl != NULL; /* rl and el have the same length */ - rl = rl->next, el = el->next) + rl = rl->next, el = el->next, + tl = tl ? tl->next : NULL) { bool newdiff; - if (tl) - tl = tl->next; /* tl has the same length as rl and el if it - * exists */ - newdiff = results_differ(test, rl->str, el->str); if (newdiff && tl) { |