lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


luaZ_fill discount the byte ,but luaZ_read put it back; it seems unuseful;
why code do not write like this:
int luaZ_fill (ZIO *z) {
  ....
  z->n = size - 1;  /* discount char being returned */
  z->p = buff;
  return cast_uchar(*(z->p));
}
size_t luaZ_read (ZIO *z, void *b, size_t n) {
  while (n) {
    size_t m;
    if (z->n == 0) {  /* no bytes in buffer? */
      if (luaZ_fill(z) == EOZ)  /* try to read more */
        return n;  /* no more input; return number of missing bytes */
      //else {
      //  z->n++;  /* luaZ_fill consumed first byte; put it back */
      //  z->p--;
      //}
    }
    ....
  }
  return 0;
}
why need discount and put it back ?