diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-01-14 10:13:19 +0100 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 11:02:38 +1000 |
commit | 8f9dcdd4e6e9ca134d67dfce114ebc426556821d (patch) | |
tree | 34b12da0e157b5353c48d7dedc93a0c20113c62b | |
parent | f076785db286dbb41b50830f5174febc3a8c85aa (diff) | |
download | jimtcl-8f9dcdd4e6e9ca134d67dfce114ebc426556821d.zip jimtcl-8f9dcdd4e6e9ca134d67dfce114ebc426556821d.tar.gz jimtcl-8f9dcdd4e6e9ca134d67dfce114ebc426556821d.tar.bz2 |
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>
-rw-r--r-- | jim.c | 15 |
1 files changed, 3 insertions, 12 deletions
@@ -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 */ |