Re: [PATCH] Really *do* nothing in while loop
- From
- Michael Tokarev <mjt@tls.msk.ru>
- Date
- May 8, 2005, 11:40 UTC
- Message-ID
- <427DFAB8.5050000@tls.msk.ru>
- In-Reply-To
- <12e801c553c1$c454ea20$1225a8c0@kittycat>
jdow wrote:
> From: "James Purser" <purserj@ksit.dynalias.com> >
while (deflate(&stream, 0) == Z_OK) - /* nothing */ + /* nothing */; stream.next_in = buf;
Show 17 quoted lines
> > You guys REALLY do not see the changed semantics here? You are > changing: > while (deflate(&stream, 0) == Z_OK) > stream.next_in = buf; > > into > > while (deflate(&stream, 0) == Z_OK) > ; > /* Then the data itself.. */ > stream.next_in = buf; > > I suspect the results of that tiny bit of code would be slightly > different, especially if "stream.next_in" is volatile, "buf" > is volatile, or if the assignment to next_in has an effect on > the "deflate" operation.
As I already said, deflate() in this case does only ONE iteration. stream.avail_in is NOT changed in the loop (except of the deflate() itself, where it will be set to 0 - provided out buffer have enouth room). So the whole while loop does only ONE iteration, returning Z_NEED_DATA or something the next one. So no, the semantics here (actual semantics) does NOT change.
/mjt