From e1ee27026569a94e58648d9825dc000dd53130d1 Mon Sep 17 00:00:00 2001 From: Zachary T Welch Date: Sun, 29 Nov 2009 18:08:13 -0800 Subject: jtag: avoid using interp global variable Adds 'interp' field to jtag_tap_event_action structure to avoid using the global variable of same name. --- src/jtag/jtag.h | 11 ++++++++--- src/jtag/tcl.c | 8 +++++--- 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'src') 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; } -- cgit v1.2.3