aboutsummaryrefslogtreecommitdiff
path: root/iolib.c
diff options
context:
space:
mode:
Diffstat (limited to 'iolib.c')
-rw-r--r--iolib.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/iolib.c b/iolib.c
index c5d40318..8a531e50 100644
--- a/iolib.c
+++ b/iolib.c
@@ -242,6 +242,9 @@ static void lua_printstack (FILE *f)
242 while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT) { 242 while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT) {
243 char *name; 243 char *name;
244 int currentline; 244 int currentline;
245 char *filename;
246 int linedefined;
247 lua_funcinfo(func, &filename, &linedefined);
245 fprintf(f, (level==2) ? "Active Stack:\n\t" : "\t"); 248 fprintf(f, (level==2) ? "Active Stack:\n\t" : "\t");
246 switch (*lua_getobjname(func, &name)) { 249 switch (*lua_getobjname(func, &name)) {
247 case 'g': 250 case 'g':
@@ -251,19 +254,19 @@ static void lua_printstack (FILE *f)
251 fprintf(f, "`%s' tag method", name); 254 fprintf(f, "`%s' tag method", name);
252 break; 255 break;
253 default: { 256 default: {
254 char *filename;
255 int linedefined;
256 lua_funcinfo(func, &filename, &linedefined);
257 if (linedefined == 0) 257 if (linedefined == 0)
258 fprintf(f, "main of %s", filename); 258 fprintf(f, "main of %s", filename);
259 else if (linedefined < 0) 259 else if (linedefined < 0)
260 fprintf(f, "%s", filename); 260 fprintf(f, "%s", filename);
261 else 261 else
262 fprintf(f, "function (%s:%d)", filename, linedefined); 262 fprintf(f, "function (%s:%d)", filename, linedefined);
263 filename = NULL;
263 } 264 }
264 } 265 }
265 if ((currentline = lua_currentline(func)) > 0) 266 if ((currentline = lua_currentline(func)) > 0)
266 fprintf(f, " at line %d", currentline); 267 fprintf(f, " at line %d", currentline);
268 if (filename)
269 fprintf(f, " [in file %s]", filename);
267 fprintf(f, "\n"); 270 fprintf(f, "\n");
268 } 271 }
269} 272}