gnu-arch-users
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]