summaryrefslogtreecommitdiff
path: root/src/lzio.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lzio.c')
-rw-r--r--src/lzio.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/lzio.c b/src/lzio.c
index 3aeca1c5..f538ea75 100644
--- a/src/lzio.c
+++ b/src/lzio.c
@@ -1,5 +1,5 @@
/*
-** $Id: lzio.c,v 1.24 2003/03/20 16:00:56 roberto Exp $
+** $Id: lzio.c,v 1.28 2003/11/18 10:44:53 roberto Exp $
** a generic input stream interface
** See Copyright Notice in lua.h
*/
@@ -13,12 +13,17 @@
#include "llimits.h"
#include "lmem.h"
+#include "lstate.h"
#include "lzio.h"
int luaZ_fill (ZIO *z) {
size_t size;
- const char *buff = z->reader(NULL, z->data, &size);
+ lua_State *L = z->L;
+ const char *buff;
+ lua_unlock(L);
+ buff = z->reader(L, z->data, &size);
+ lua_lock(L);
if (buff == NULL || size == 0) return EOZ;
z->n = size - 1;
z->p = buff;
@@ -37,10 +42,10 @@ int luaZ_lookahead (ZIO *z) {
}
-void luaZ_init (ZIO *z, lua_Chunkreader reader, void *data, const char *name) {
+void luaZ_init (lua_State *L, ZIO *z, lua_Chunkreader reader, void *data) {
+ z->L = L;
z->reader = reader;
z->data = data;
- z->name = name;
z->n = 0;
z->p = NULL;
}
@@ -72,8 +77,7 @@ size_t luaZ_read (ZIO *z, void *b, size_t n) {
char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n) {
if (n > buff->buffsize) {
if (n < LUA_MINBUFFER) n = LUA_MINBUFFER;
- luaM_reallocvector(L, buff->buffer, buff->buffsize, n, char);
- buff->buffsize = n;
+ luaZ_resizebuffer(L, buff, n);
}
return buff->buffer;
}