diff options
-rw-r--r-- | src/jim.c | 13 | ||||
-rw-r--r-- | src/openocd.c | 29 |
2 files changed, 16 insertions, 26 deletions
@@ -8245,10 +8245,10 @@ int Jim_EvalObjVector(Jim_Interp *interp, int objc, Jim_Obj *const *objv) retcode = cmdPtr->cmdProc(interp, objc, objv); } else { retcode = JimCallProcedure(interp, cmdPtr, objc, objv); - if (retcode == JIM_ERR) { - JimAppendStackTrace(interp, - Jim_GetString(objv[0], NULL), "?", 1); - } + if (retcode == JIM_ERR) { + JimAppendStackTrace(interp, + Jim_GetString(objv[0], NULL), "?", 1); + } } } /* Decr refcount of arguments and return the retcode */ @@ -8540,6 +8540,11 @@ int Jim_EvalObj(Jim_Interp *interp, Jim_Obj *scriptObjPtr) } else { /* Call [unknown] */ retcode = JimUnknown(interp, argc, argv); + if (retcode == JIM_ERR) { + JimAppendStackTrace(interp, + Jim_GetString(argv[0], NULL), script->fileName, + token[i-argc*2].linenr); + } } if (retcode != JIM_OK) { i -= argc*2; /* point to the command name. */ diff --git a/src/openocd.c b/src/openocd.c index b2a8ade5..50eb99e0 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -357,35 +357,20 @@ int jim_command(command_context_t *context, char *line) int retval=ERROR_OK; int retcode=Jim_Eval(interp, line); - const char *result; - int reslen; - result = Jim_GetString(Jim_GetResult(interp), &reslen); if (retcode == JIM_ERR) { - int len, i; - - LOG_USER_N("Runtime error, file \"%s\", line %d:" JIM_NL, interp->errorFileName, interp->errorLine); - LOG_USER_N(" %s" JIM_NL, - Jim_GetString(interp->result, NULL)); - Jim_ListLength(interp, interp->stackTrace, &len); - for (i = 0; i < len; i += 3) { - Jim_Obj *objPtr; - const char *proc, *file, *line; - - Jim_ListIndex(interp, interp->stackTrace, i, &objPtr, JIM_NONE); - proc = Jim_GetString(objPtr, NULL); - Jim_ListIndex(interp, interp->stackTrace, i+1, &objPtr, JIM_NONE); - file = Jim_GetString(objPtr, NULL); - Jim_ListIndex(interp, interp->stackTrace, i+2, &objPtr, JIM_NONE); - line = Jim_GetString(objPtr, NULL); - LOG_USER_N("In procedure '%s' called at file \"%s\", line %s" JIM_NL, proc, file, line); - } + Jim_PrintErrorMessage(interp); long t; if (Jim_GetLong(interp, Jim_GetVariableStr(interp, "openocd_result", JIM_ERRMSG), &t)==JIM_OK) { return t; } return ERROR_FAIL; - } else if (retcode == JIM_EXIT) { + } + const char *result; + int reslen; + result = Jim_GetString(Jim_GetResult(interp), &reslen); + + if (retcode == JIM_EXIT) { /* ignore. */ /* exit(Jim_GetExitCode(interp)); */ } else { |