Roberto Ierusalimschy 24 年之前
父节点
当前提交
03d8a9bf0d
共有 3 个文件被更改,包括 9 次插入8 次删除
  1. 2 2
      llimits.h
  2. 3 4
      lstring.c
  3. 4 2
      ltests.c

+ 2 - 2
llimits.h

@@ -1,5 +1,5 @@
 /*
-** $Id: llimits.h,v 1.20 2000/11/24 17:39:56 roberto Exp roberto $
+** $Id: llimits.h,v 1.21 2000/12/04 18:33:40 roberto Exp roberto $
 ** Limits, basic types, and some other "installation-dependent" definitions
 ** See Copyright Notice in lua.h
 */
@@ -90,7 +90,7 @@ typedef luint32 Instruction;
 ** (accordingly, size_u will be 10, and size_a will be 5)
 */
 #define SIZE_INSTRUCTION        32
-#define SIZE_B          9
+#define SIZE_B          8
 
 #define SIZE_OP         6
 #define SIZE_U          (SIZE_INSTRUCTION-SIZE_OP)

+ 3 - 4
lstring.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lstring.c,v 1.56 2001/02/09 19:53:16 roberto Exp roberto $
+** $Id: lstring.c,v 1.57 2001/02/09 20:22:29 roberto Exp roberto $
 ** String table (keeps all strings handled by Lua)
 ** See Copyright Notice in lua.h
 */
@@ -89,13 +89,12 @@ TString *luaS_newlstr (lua_State *L, const char *str, size_t l) {
 
 
 TString *luaS_newudata (lua_State *L, size_t s, void *udata) {
-  union L_UTString *uts = (union L_UTString *)luaM_malloc(L, sizeudata(s));
-  TString *ts = &uts->ts;
+  TString *ts = (TString *)luaM_malloc(L, sizeudata(s));
   ts->marked = 0;
   ts->nexthash = NULL;
   ts->len = s;
   ts->u.d.tag = 0;
-  ts->u.d.value = (s > 0) ? uts+1 : udata;
+  ts->u.d.value = (s > 0) ? getstr(ts) : udata;
   /* insert it on table */
   newentry(L, &G(L)->udt, ts, lmod(IntPoint(ts->u.d.value), G(L)->udt.size));
   return ts;

+ 4 - 2
ltests.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ltests.c,v 1.65 2001/02/09 19:53:16 roberto Exp roberto $
+** $Id: ltests.c,v 1.66 2001/02/09 20:22:29 roberto Exp roberto $
 ** Internal Module for Debugging of the Lua Implementation
 ** See Copyright Notice in lua.h
 */
@@ -356,7 +356,9 @@ static int newuserdata (lua_State *L) {
     return 2;
   }
   else {
-    lua_newuserdata(L, luaL_check_int(L, 1));
+    size_t size = luaL_check_int(L, 1);
+    char *p = (char *)lua_newuserdata(L, size);
+    while (size--) *p++ = '\0';
     return 1;
   }
 }