summaryrefslogtreecommitdiff
path: root/jim.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-14 10:13:19 +0100
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:38 +1000
commit8f9dcdd4e6e9ca134d67dfce114ebc426556821d (patch)
tree34b12da0e157b5353c48d7dedc93a0c20113c62b /jim.c
parentf076785db286dbb41b50830f5174febc3a8c85aa (diff)
errors: improve stack traces for return -code error
the file and line number for return -code error's are now added to the dumped stack trace. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Diffstat (limited to 'jim.c')
-rw-r--r--jim.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/jim.c b/jim.c
index e4ad176..fa16a82 100644
--- a/jim.c
+++ b/jim.c
@@ -8090,6 +8090,7 @@ int Jim_EvalObj(Jim_Interp *interp, Jim_Obj *scriptObjPtr)
int *cs; /* command structure array */
int retcode = JIM_OK;
Jim_Obj *sargv[JIM_EVAL_SARGV_LEN], **argv = NULL, *tmpObjPtr;
+ Jim_Obj *errorProc = NULL;
interp->errorFlag = 0;
@@ -8242,26 +8243,16 @@ int Jim_EvalObj(Jim_Interp *interp, Jim_Obj *scriptObjPtr)
if (cmd->cmdProc) {
interp->cmdPrivData = cmd->privData;
retcode = cmd->cmdProc(interp, argc, argv);
- if (retcode == JIM_ERR_ADDSTACK) {
- JimAppendStackTrace(interp, "", script->fileName, cmdtoken->linenr);
- retcode = JIM_ERR;
- }
} else {
retcode = JimCallProcedure(interp, cmd, argc, argv);
if (retcode == JIM_ERR) {
- JimAppendStackTrace(interp,
- Jim_GetString(argv[0], NULL), script->fileName,
- cmdtoken->linenr);
+ errorProc = argv[0];
+ Jim_IncrRefCount(errorProc);
}
}
} else {
/* Call [unknown] */
retcode = JimUnknown(interp, argc, argv);
- if (retcode == JIM_ERR) {
- JimAppendStackTrace(interp,
- "", script->fileName,
- cmdtoken->linenr);
- }
}
if (interp->signal_level && interp->signal) {
/* Check for a signal after each command */