aboutsummaryrefslogtreecommitdiff
path: root/ldump.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldump.c')
-rw-r--r--ldump.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/ldump.c b/ldump.c
index 007f2223..54a7bb48 100644
--- a/ldump.c
+++ b/ldump.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: ldump.c,v 2.12 2009/09/30 15:38:37 roberto Exp roberto $ 2** $Id: ldump.c,v 1.17 2010/10/13 21:04:52 lhf Exp $
3** save precompiled Lua chunks 3** save precompiled Lua chunks
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -75,7 +75,7 @@ static void DumpString(const TString* s, DumpState* D)
75 75
76#define DumpCode(f,D) DumpVector(f->code,f->sizecode,sizeof(Instruction),D) 76#define DumpCode(f,D) DumpVector(f->code,f->sizecode,sizeof(Instruction),D)
77 77
78static void DumpFunction(const Proto* f, const TString* p, DumpState* D); 78static void DumpFunction(const Proto* f, DumpState* D);
79 79
80static void DumpConstants(const Proto* f, DumpState* D) 80static void DumpConstants(const Proto* f, DumpState* D)
81{ 81{
@@ -98,14 +98,11 @@ static void DumpConstants(const Proto* f, DumpState* D)
98 case LUA_TSTRING: 98 case LUA_TSTRING:
99 DumpString(rawtsvalue(o),D); 99 DumpString(rawtsvalue(o),D);
100 break; 100 break;
101 default:
102 lua_assert(0); /* cannot happen */
103 break;
104 } 101 }
105 } 102 }
106 n=f->sizep; 103 n=f->sizep;
107 DumpInt(n,D); 104 DumpInt(n,D);
108 for (i=0; i<n; i++) DumpFunction(f->p[i],f->source,D); 105 for (i=0; i<n; i++) DumpFunction(f->p[i],D);
109} 106}
110 107
111static void DumpUpvalues(const Proto* f, DumpState* D) 108static void DumpUpvalues(const Proto* f, DumpState* D)
@@ -122,6 +119,7 @@ static void DumpUpvalues(const Proto* f, DumpState* D)
122static void DumpDebug(const Proto* f, DumpState* D) 119static void DumpDebug(const Proto* f, DumpState* D)
123{ 120{
124 int i,n; 121 int i,n;
122 DumpString((D->strip) ? NULL : f->source,D);
125 n= (D->strip) ? 0 : f->sizelineinfo; 123 n= (D->strip) ? 0 : f->sizelineinfo;
126 DumpVector(f->lineinfo,n,sizeof(int),D); 124 DumpVector(f->lineinfo,n,sizeof(int),D);
127 n= (D->strip) ? 0 : f->sizelocvars; 125 n= (D->strip) ? 0 : f->sizelocvars;
@@ -137,9 +135,8 @@ static void DumpDebug(const Proto* f, DumpState* D)
137 for (i=0; i<n; i++) DumpString(f->upvalues[i].name,D); 135 for (i=0; i<n; i++) DumpString(f->upvalues[i].name,D);
138} 136}
139 137
140static void DumpFunction(const Proto* f, const TString* p, DumpState* D) 138static void DumpFunction(const Proto* f, DumpState* D)
141{ 139{
142 DumpString((f->source==p || D->strip) ? NULL : f->source,D);
143 DumpInt(f->linedefined,D); 140 DumpInt(f->linedefined,D);
144 DumpInt(f->lastlinedefined,D); 141 DumpInt(f->lastlinedefined,D);
145 DumpChar(f->numparams,D); 142 DumpChar(f->numparams,D);
@@ -170,6 +167,6 @@ int luaU_dump (lua_State* L, const Proto* f, lua_Writer w, void* data, int strip
170 D.strip=strip; 167 D.strip=strip;
171 D.status=0; 168 D.status=0;
172 DumpHeader(&D); 169 DumpHeader(&D);
173 DumpFunction(f,NULL,&D); 170 DumpFunction(f,&D);
174 return D.status; 171 return D.status;
175} 172}