Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

problem with multios on irix 5.3, zsh 3.0.1

i built zsh 3.0.1 "out-of-the-box", didn't get any compiler errors,
etc. on an irix 5.3 system.

i discovered this possible bug:

in a directory with a large number of files:

% cat < * > /dev/null

this gives a seg fault on irix.  on solaris, according to a friend, it
just stops at the 54th file.  my best guess is that the fdtable is
filling up.  there don't seem to be any upper-bounds checks in the
functions in util.c that deal with fdtable.  no lower bound check in
zclose, either, so sometimes max_zsh_fd can go beyond the end of the
array or go negative (unless there's some invariant condition that keeps
it from going negative.  some debugging seemed to indicate that it was
going neg, though.).

while trying to track down the problem, i also found some code in
exec.c that looks like this:

fdtable[pipes[!out]] = 2;

it may be ansi-acceptable to trust "!" to always return 0 or 1, but
this would probably be easier to read if it were

fdtable[pipes[out ? 0 : 1]] = 2;

that's personal preference, of course.

ray jones

Messages sorted by: Reverse Date, Date, Thread, Author