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