[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gnu-arch-users] [BUG] serious bug in vu_write_retry?
From: |
Tom Lord |
Subject: |
Re: [Gnu-arch-users] [BUG] serious bug in vu_write_retry? |
Date: |
Fri, 9 Jul 2004 08:09:06 -0700 (PDT) |
> From: Jeremy Shaw <address@hidden>
> --- orig/vu/vu.c
> +++ mod/vu/vu.c
> @@ -1241,8 +1241,11 @@
> return amt;
> if (amt == count)
> return orig_count;
> - count -= amt;
> - buf += amt;
> + if(amt > 0 )
> + {
> + count -= amt;
> + buf += amt;
> + }
> }
> }
Ouch. Amazing how long that's been there.
I think this is clearer:
{
ssize_t amt;
amt = vu_write (errn, fd, buf, count);
if (amt < 0)
{
if ((*errn == EAGAIN) || (*errn == EINTR))
continue;
else
return amt;
}
else if (amt == count)
return orig_count;
else
{
count -= amt;
buf += amt;
}
}
(and will be pushed soon (modulo consideration of abentley's
alternative return value proposal)).
-t