Ryan Bloom wrote:
>
> >
> > - if ((*new)->filedes < 0 && (*new)->filehand == NULL) {
> > + if ((*new)->filedes < 0 || (*new)->filehand == NULL) {
> > (*new)->filedes = -1;
> > (*new)->eof_hit = 1;
> > return errno;
>
> This is wrong. This says that we NEVER open the file correctly. This is
> because we only ever set one of the two options, either the filedes or the
> filehand, NEVER both.
Yeah but filedes == 0 when you use filehand (which is possibly a bug).
> We are checking for the error condition, not the
> successful case. Either the filedes or the filehand WILL be not set after
> each open. I have serious doubts that the code even works anymore. If
> it does, it is only because we aren't checking return code properly.
OK, well it didn't work before, and it now does _when_ it is using
filehand. I agree this it is still broken, though, but less so than
before.
Cheers,
Ben.
--
http://www.apache-ssl.org/ben.html
"My grandfather once told me that there are two kinds of people: those
who work and those who take the credit. He told me to try to be in the
first group; there was less competition there."
- Indira Gandhi
|