diff options
author | Zachary T Welch <zw@superlucidity.net> | 2009-11-29 18:08:13 -0800 |
---|---|---|
committer | Zachary T Welch <zw@superlucidity.net> | 2009-11-30 16:29:34 -0800 |
commit | e1ee27026569a94e58648d9825dc000dd53130d1 (patch) | |
tree | 84003780d56d4e8cde303b6dfbfe249538c4127e | |
parent | be65f497f5f50d6d037295d5f466db5314f99de1 (diff) | |
download | openocd+libswd-e1ee27026569a94e58648d9825dc000dd53130d1.tar.gz openocd+libswd-e1ee27026569a94e58648d9825dc000dd53130d1.tar.bz2 openocd+libswd-e1ee27026569a94e58648d9825dc000dd53130d1.tar.xz openocd+libswd-e1ee27026569a94e58648d9825dc000dd53130d1.zip |
jtag: avoid using interp global variable
Adds 'interp' field to jtag_tap_event_action structure to avoid
using the global variable of same name.
-rw-r--r-- | src/jtag/jtag.h | 11 | ||||
-rw-r--r-- | src/jtag/tcl.c | 8 |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h index d4fafa3b..ee967752 100644 --- a/src/jtag/jtag.h +++ b/src/jtag/jtag.h @@ -209,9 +209,14 @@ enum jtag_event { struct jtag_tap_event_action { - enum jtag_event event; - Jim_Obj* body; - struct jtag_tap_event_action* next; + /// The event for which this action will be triggered. + enum jtag_event event; + /// The interpreter to use for evaluating the @c body. + Jim_Interp *interp; + /// Contains a script to 'eval' when the @c event is triggered. + Jim_Obj *body; + // next action in linked list + struct jtag_tap_event_action *next; }; /** diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c index 7ec7fa40..68bb21e4 100644 --- a/src/jtag/tcl.c +++ b/src/jtag/tcl.c @@ -341,8 +341,9 @@ static int jtag_tap_configure_event(Jim_GetOptInfo *goi, struct jtag_tap * tap) if (!found) jteap = calloc(1, sizeof(*jteap)); else if (NULL != jteap->body) - Jim_DecrRefCount(interp, jteap->body); + Jim_DecrRefCount(goi->interp, jteap->body); + jteap->interp = goi->interp; jteap->event = n->value; Jim_Obj *o; @@ -359,6 +360,7 @@ static int jtag_tap_configure_event(Jim_GetOptInfo *goi, struct jtag_tap * tap) } else if (found) { + jteap->interp = goi->interp; Jim_SetResult(goi->interp, Jim_DuplicateObj(goi->interp, jteap->body)); } @@ -616,9 +618,9 @@ static void jtag_tap_handle_event(struct jtag_tap *tap, enum jtag_event e) tap->dotted_name, e, nvp->name, Jim_GetString(jteap->body, NULL)); - if (Jim_EvalObj(interp, jteap->body) != JIM_OK) + if (Jim_EvalObj(jteap->interp, jteap->body) != JIM_OK) { - Jim_PrintErrorMessage(interp); + Jim_PrintErrorMessage(jteap->interp); continue; } |