12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- When loading a file, Lua may call the reader function again after it returned end of input.
- Fetch from: http://www.lua.org/bugs.html#5.1.5-2
- Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
- Index: b/src/lzio.c
- ===================================================================
- --- a/src/lzio.c
- +++ b/src/lzio.c
- @@ -22,10 +22,14 @@
- size_t size;
- lua_State *L = z->L;
- const char *buff;
- + if (z->eoz) return EOZ;
- lua_unlock(L);
- buff = z->reader(L, z->data, &size);
- lua_lock(L);
- - if (buff == NULL || size == 0) return EOZ;
- + if (buff == NULL || size == 0) {
- + z->eoz = 1; /* avoid calling reader function next time */
- + return EOZ;
- + }
- z->n = size - 1;
- z->p = buff;
- return char2int(*(z->p++));
- @@ -51,6 +55,7 @@
- z->data = data;
- z->n = 0;
- z->p = NULL;
- + z->eoz = 0;
- }
-
-
- Index: b/src/lzio.h
- ===================================================================
- --- a/src/lzio.h
- +++ b/src/lzio.h
- @@ -59,6 +59,7 @@
- lua_Reader reader;
- void* data; /* additional data */
- lua_State *L; /* Lua state (for reader) */
- + int eoz; /* true if reader has no more data */
- };
-
-
|