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 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 */ };