mirror of
https://github.com/postgres/postgres.git
synced 2025-05-02 11:44:50 +03:00
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.
This commit is contained in:
parent
eb16011f4c
commit
c5e46c7c3b
@ -1752,14 +1752,11 @@ run_schedule(const char *schedule, test_function tfunc)
|
|||||||
*/
|
*/
|
||||||
for (rl = resultfiles[i], el = expectfiles[i], tl = tags[i];
|
for (rl = resultfiles[i], el = expectfiles[i], tl = tags[i];
|
||||||
rl != NULL; /* rl and el have the same length */
|
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;
|
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);
|
newdiff = results_differ(tests[i], rl->str, el->str);
|
||||||
if (newdiff && tl)
|
if (newdiff && tl)
|
||||||
{
|
{
|
||||||
@ -1848,14 +1845,11 @@ run_single_test(const char *test, test_function tfunc)
|
|||||||
*/
|
*/
|
||||||
for (rl = resultfiles, el = expectfiles, tl = tags;
|
for (rl = resultfiles, el = expectfiles, tl = tags;
|
||||||
rl != NULL; /* rl and el have the same length */
|
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;
|
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);
|
newdiff = results_differ(test, rl->str, el->str);
|
||||||
if (newdiff && tl)
|
if (newdiff && tl)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user