diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-06-18 14:33:30 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1997-06-18 14:33:30 -0300 |
commit | e931c7c0f605f140fa60d0b676fe7caf12a6f410 (patch) | |
tree | f3a3f852219a7267d5a98758a79c8ab48f50c731 | |
parent | 70160320b120a6afb629c8fd1ebb3005682bafb9 (diff) | |
download | lua-e931c7c0f605f140fa60d0b676fe7caf12a6f410.tar.gz lua-e931c7c0f605f140fa60d0b676fe7caf12a6f410.tar.bz2 lua-e931c7c0f605f140fa60d0b676fe7caf12a6f410.zip |
error message always shows file names.
-rw-r--r-- | iolib.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -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 | } |