From ec422ec7d0f0af2bac368fe99b92d5ad7b381184 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Wed, 5 Mar 1997 10:32:41 -0300 Subject: [PATCH] skips can be nested (why not?). --- iolib.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/iolib.c b/iolib.c index fb2c3b4b..bb352009 100644 --- a/iolib.c +++ b/iolib.c @@ -115,8 +115,14 @@ static void io_read (void) int c = NEED_OTHER; luaI_addchar(0); while (*p) { - if (*p == '{' || *p == '}') { - inskip = (*p == '{'); + if (*p == '{') { + inskip++; + p++; + } + else if (*p == '}') { + if (inskip == 0) + lua_error("unbalanced `{...}' in read pattern"); + inskip--; p++; } else { @@ -125,7 +131,7 @@ static void io_read (void) if (c == NEED_OTHER) c = getc(lua_infile); m = (c == EOF) ? 0 : singlematch((char)c, p); if (m) { - if (!inskip) luaI_addchar(c); + if (inskip == 0) luaI_addchar(c); c = NEED_OTHER; } switch (*ep) {