浏览代码

skips can be nested (why not?).

Roberto Ierusalimschy 28 年之前
父节点
当前提交
ec422ec7d0
共有 1 个文件被更改,包括 9 次插入3 次删除
  1. 9 3
      iolib.c

+ 9 - 3
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) {