[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug-gsl] array, vector indices out-of-bounds in "linalg/bidiag.c"
From: |
Julian Seward |
Subject: |
Re: [Bug-gsl] array, vector indices out-of-bounds in "linalg/bidiag.c" |
Date: |
Sun, 20 Apr 2008 09:58:47 +0200 |
User-agent: |
KMail/1.9.5 |
> for (j = N; j > 0 && j--;)
This is an extremely strange for-loop header, and I wonder if
it is what the author(s) really intended. I _think_ it might
be equivalent to
for (j = N; j > 0 && j != 0; /*no step action*/) {
j--;
/* now the rest of the loop body */
}
j--; /* because the condition is consulted 1 more time than the
loop body runs */
so there isn't necessarily an overrun at j = N.
I wonder if it would not be cleaner to use a standard idiom:
for (j = N-1; j >= 0; j--)
IMO even a C language lawyer would have a hard time figuring out
what the exact behaviour is here, which doesn't bode well for
end-user understanding of the code.
You might want to try Valgrind's Memcheck tool to see if there
are in fact any overruns happening.
J
- [Bug-gsl] array, vector indices out-of-bounds in "linalg/bidiag.c", Kort Travis, 2008/04/20
- Re: [Bug-gsl] array, vector indices out-of-bounds in "linalg/bidiag.c",
Julian Seward <=
- Re: [Bug-gsl] array, vector indices out-of-bounds in "linalg/bidiag.c", Andrew W. Steiner, 2008/04/20
- Re: [Bug-gsl] array, vector indices out-of-bounds in "linalg/bidiag.c", Julian Seward, 2008/04/22
- Re: [Bug-gsl] array, vector indices out-of-bounds in "linalg/bidiag.c", Brian Gough, 2008/04/23
- Re: [Bug-gsl] array, vector indices out-of-bounds in "linalg/bidiag.c", Gerard Jungman, 2008/04/23
- Re: [Bug-gsl] array, vector indices out-of-bounds in "linalg/bidiag.c", Julian Seward, 2008/04/24