diff --git a/lmem.h b/lmem.h
index d9afa3c6..9caf42fc 100644
--- a/lmem.h
+++ b/lmem.h
@@ -1,5 +1,5 @@
 /*
-** $Id: lmem.h,v 1.40 2013/02/20 14:08:21 roberto Exp roberto $
+** $Id: lmem.h,v 1.41 2014/10/08 20:25:51 roberto Exp roberto $
 ** Interface to Memory Manager
 ** See Copyright Notice in lua.h
 */
@@ -32,6 +32,11 @@
       ? luaM_toobig(L) : cast_void(0)) , \
    luaM_realloc_(L, (b), (on)*(e), (n)*(e)))
 
+/*
+** Arrays of chars do not need any test
+*/
+#define luaM_reallocvchar(L,b,on,n)   luaM_realloc_(L, (b), (on), (n))
+
 #define luaM_freemem(L, b, s)	luaM_realloc_(L, (b), (s), 0)
 #define luaM_free(L, b)		luaM_realloc_(L, (b), sizeof(*(b)), 0)
 #define luaM_freearray(L, b, n)   luaM_realloc_(L, (b), (n)*sizeof(*(b)), 0)
diff --git a/lzio.h b/lzio.h
index 6e95fb3d..00778433 100644
--- a/lzio.h
+++ b/lzio.h
@@ -1,5 +1,5 @@
 /*
-** $Id: lzio.h,v 1.27 2013/06/07 14:51:10 roberto Exp roberto $
+** $Id: lzio.h,v 1.28 2014/01/31 15:14:22 roberto Exp roberto $
 ** Buffered streams
 ** See Copyright Notice in lua.h
 */
@@ -37,7 +37,8 @@ typedef struct Mbuffer {
 
 
 #define luaZ_resizebuffer(L, buff, size) \
-	(luaM_reallocvector(L, (buff)->buffer, (buff)->buffsize, size, char), \
+	((buff)->buffer = cast(char *, luaM_reallocvchar(L, (buff)->buffer, \
+						(buff)->buffsize, size)), \
 	(buff)->buffsize = size)
 
 #define luaZ_freebuffer(L, buff)	luaZ_resizebuffer(L, buff, 0)