Skip to content
Snippets Groups Projects
Commit 8109a3c1 authored by Tom Lane's avatar Tom Lane
Browse files

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.
parent 59c2df3a
No related branches found
Tags
No related merge requests found
......@@ -1899,14 +1899,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)
{
......@@ -1986,14 +1983,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)
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment