浏览代码

no more default size for option 'c' in pack/unpack

Roberto Ierusalimschy 10 年之前
父节点
当前提交
32a1f54b9a
共有 1 个文件被更改,包括 6 次插入2 次删除
  1. 6 2
      lstrlib.c

+ 6 - 2
lstrlib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lstrlib.c,v 1.216 2014/11/08 18:12:53 roberto Exp roberto $
+** $Id: lstrlib.c,v 1.217 2014/11/11 19:40:20 roberto Exp roberto $
 ** Standard library for string operations and pattern-matching
 ** See Copyright Notice in lua.h
 */
@@ -1084,7 +1084,11 @@ static KOption getoption (Header *h, const char **fmt, int *size) {
     case 'i': *size = getnumlimit(h, fmt, sizeof(int)); return Kint;
     case 'I': *size = getnumlimit(h, fmt, sizeof(int)); return Kuint;
     case 's': *size = getnumlimit(h, fmt, sizeof(size_t)); return Kstring;
-    case 'c': *size = getnum(fmt, 1); return Kchar;
+    case 'c':
+      *size = getnum(fmt, -1);
+      if (*size == -1)
+        luaL_error(h->L, "missing size for format option 'c'");
+      return Kchar;
     case 'z': return Kzstr;
     case 'x': *size = 1; return Kpadding;
     case 'X': return Kpaddalign;