lua

A copy of the Lua development repository
Log | Files | Refs | README

commit b518d1407149a23d31b486f5bd3ef9e6daae93c1
parent 15dbb5346143a0af082fa96477db788a78fa6c61
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date:   Thu, 20 Mar 2003 13:00:34 -0300

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

Diffstat:
Mbugs | 5+++++
Mlzio.c | 6+++---
Mlzio.h | 9+++++----
3 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/bugs b/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) + diff --git a/lzio.c b/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); } diff --git a/lzio.h b/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)