aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-12-28 10:59:41 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2000-12-28 10:59:41 -0200
commit76f62fc5a140170164857a318eabc564fad3de6b (patch)
treeef57ea97d7ec273688be914b80d67c0cfb01aab1
parent0183b8030c80f57b87874ff7867ccdb172d9d3dc (diff)
downloadlua-76f62fc5a140170164857a318eabc564fad3de6b.tar.gz
lua-76f62fc5a140170164857a318eabc564fad3de6b.tar.bz2
lua-76f62fc5a140170164857a318eabc564fad3de6b.zip
correct size only after malloc success
-rw-r--r--lundump.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/lundump.c b/lundump.c
index 04d062a0..0a856747 100644
--- a/lundump.c
+++ b/lundump.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lundump.c,v 1.35 2000/12/04 18:33:40 roberto Exp roberto $ 2** $Id: lundump.c,v 1.36 2000/12/28 12:55:41 roberto Exp roberto $
3** load bytecodes from files 3** load bytecodes from files
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -104,9 +104,9 @@ static TString* LoadString (lua_State* L, ZIO* Z, int swap)
104 104
105static void LoadCode (lua_State* L, Proto* tf, ZIO* Z, int swap) 105static void LoadCode (lua_State* L, Proto* tf, ZIO* Z, int swap)
106{ 106{
107 int size; 107 int size=LoadInt(L,Z,swap);
108 tf->sizecode=size=LoadInt(L,Z,swap);
109 tf->code=luaM_newvector(L,size,Instruction); 108 tf->code=luaM_newvector(L,size,Instruction);
109 tf->sizecode=size;
110 LoadVector(L,tf->code,size,sizeof(*tf->code),Z,swap); 110 LoadVector(L,tf->code,size,sizeof(*tf->code),Z,swap);
111 if (tf->code[size-1]!=OP_END) luaO_verror(L,"bad code in `%.99s'",ZNAME(Z)); 111 if (tf->code[size-1]!=OP_END) luaO_verror(L,"bad code in `%.99s'",ZNAME(Z));
112} 112}
@@ -114,8 +114,9 @@ static void LoadCode (lua_State* L, Proto* tf, ZIO* Z, int swap)
114static void LoadLocals (lua_State* L, Proto* tf, ZIO* Z, int swap) 114static void LoadLocals (lua_State* L, Proto* tf, ZIO* Z, int swap)
115{ 115{
116 int i,n; 116 int i,n;
117 tf->sizelocvars=n=LoadInt(L,Z,swap); 117 n=LoadInt(L,Z,swap);
118 tf->locvars=luaM_newvector(L,n,LocVar); 118 tf->locvars=luaM_newvector(L,n,LocVar);
119 tf->sizelocvars=n;
119 for (i=0; i<n; i++) 120 for (i=0; i<n; i++)
120 { 121 {
121 tf->locvars[i].varname=LoadString(L,Z,swap); 122 tf->locvars[i].varname=LoadString(L,Z,swap);
@@ -127,8 +128,9 @@ static void LoadLocals (lua_State* L, Proto* tf, ZIO* Z, int swap)
127static void LoadLines (lua_State* L, Proto* tf, ZIO* Z, int swap) 128static void LoadLines (lua_State* L, Proto* tf, ZIO* Z, int swap)
128{ 129{
129 int n; 130 int n;
130 tf->sizelineinfo=n=LoadInt(L,Z,swap); 131 n=LoadInt(L,Z,swap);
131 tf->lineinfo=luaM_newvector(L,n,int); 132 tf->lineinfo=luaM_newvector(L,n,int);
133 tf->sizelineinfo=n;
132 LoadVector(L,tf->lineinfo,n,sizeof(*tf->lineinfo),Z,swap); 134 LoadVector(L,tf->lineinfo,n,sizeof(*tf->lineinfo),Z,swap);
133} 135}
134 136
@@ -137,15 +139,18 @@ static Proto* LoadFunction (lua_State* L, ZIO* Z, int swap);
137static void LoadConstants (lua_State* L, Proto* tf, ZIO* Z, int swap) 139static void LoadConstants (lua_State* L, Proto* tf, ZIO* Z, int swap)
138{ 140{
139 int i,n; 141 int i,n;
140 tf->sizekstr=n=LoadInt(L,Z,swap); 142 n=LoadInt(L,Z,swap);
141 tf->kstr=luaM_newvector(L,n,TString*); 143 tf->kstr=luaM_newvector(L,n,TString*);
144 tf->sizekstr=n;
142 for (i=0; i<n; i++) 145 for (i=0; i<n; i++)
143 tf->kstr[i]=LoadString(L,Z,swap); 146 tf->kstr[i]=LoadString(L,Z,swap);
144 tf->sizeknum=n=LoadInt(L,Z,swap); 147 n=LoadInt(L,Z,swap);
145 tf->knum=luaM_newvector(L,n,lua_Number); 148 tf->knum=luaM_newvector(L,n,lua_Number);
149 tf->sizeknum=n;
146 LoadVector(L,tf->knum,n,sizeof(*tf->knum),Z,swap); 150 LoadVector(L,tf->knum,n,sizeof(*tf->knum),Z,swap);
147 tf->sizekproto=n=LoadInt(L,Z,swap); 151 n=LoadInt(L,Z,swap);
148 tf->kproto=luaM_newvector(L,n,Proto*); 152 tf->kproto=luaM_newvector(L,n,Proto*);
153 tf->sizekproto=n;
149 for (i=0; i<n; i++) 154 for (i=0; i<n; i++)
150 tf->kproto[i]=LoadFunction(L,Z,swap); 155 tf->kproto[i]=LoadFunction(L,Z,swap);
151} 156}