Browse Source

bug: zio mixes a 255 as first char in a buffer with EOZ

Roberto Ierusalimschy 22 years ago
parent
commit
b518d14071
3 changed files with 13 additions and 7 deletions
  1. 5 0
      bugs
  2. 3 3
      lzio.c
  3. 5 4
      lzio.h

+ 5 - 0
bugs

@@ -329,3 +329,8 @@ Fri Feb 28 14:20:33 EST 2003
 >> GC metamethod calls could mess C/Lua stack syncronization
 (by Roberto; since 5.0b)
 
+** lzio.h/zlio.c
+Thu Mar 20 11:40:12 EST 2003
+>> zio mixes a 255 as first char in a buffer with EOZ
+(by lhf; since 5.0a)
+

+ 3 - 3
lzio.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lzio.c,v 1.22 2002/10/08 18:46:08 roberto Exp roberto $
+** $Id: lzio.c,v 1.23 2002/12/04 17:38:31 roberto Exp roberto $
 ** a generic input stream interface
 ** See Copyright Notice in lua.h
 */
@@ -22,7 +22,7 @@ int luaZ_fill (ZIO *z) {
   if (buff == NULL || size == 0) return EOZ;
   z->n = size - 1;
   z->p = buff;
-  return *(z->p++);
+  return char2int(*(z->p++));
 }
 
 
@@ -33,7 +33,7 @@ int luaZ_lookahead (ZIO *z) {
     z->n++;
     z->p--;
   }
-  return *z->p;
+  return char2int(*z->p);
 }
 
 

+ 5 - 4
lzio.h

@@ -1,5 +1,5 @@
 /*
-** $Id: lzio.h,v 1.13 2002/08/05 18:45:02 roberto Exp roberto $
+** $Id: lzio.h,v 1.14 2002/10/08 18:46:08 roberto Exp roberto $
 ** Buffered streams
 ** See Copyright Notice in lua.h
 */
@@ -15,9 +15,10 @@
 
 typedef struct Zio ZIO;
 
-#define zgetc(z)  (((z)->n--)>0 ? \
-			cast(int, cast(unsigned char, *(z)->p++)) : \
-			luaZ_fill(z))
+
+#define char2int(c)	cast(int, cast(unsigned char, (c)))
+
+#define zgetc(z)  (((z)->n--)>0 ?  char2int(*(z)->p++) : luaZ_fill(z))
 
 #define zname(z)	((z)->name)