diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jtag/tcl.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c index defd6ef..f81b682 100644 --- a/src/jtag/tcl.c +++ b/src/jtag/tcl.c @@ -141,9 +141,11 @@ static int jtag_tap_configure_cmd(Jim_GetOptInfo *goi, jtag_tap_t * tap) } if (goi->isconfigure) { + bool replace = true; if (jteap == NULL) { /* create new */ jteap = calloc(1, sizeof (*jteap)); + replace = false; } jteap->event = n->value; Jim_GetOpt_Obj(goi, &o); @@ -153,9 +155,12 @@ static int jtag_tap_configure_cmd(Jim_GetOptInfo *goi, jtag_tap_t * tap) jteap->body = Jim_DuplicateObj(goi->interp, o); Jim_IncrRefCount(jteap->body); - /* add to head of event list */ - jteap->next = tap->event_action; - tap->event_action = jteap; + if (!replace) + { + /* add to head of event list */ + jteap->next = tap->event_action; + tap->event_action = jteap; + } Jim_SetEmptyResult(goi->interp); } else { /* get */ @@ -374,7 +379,8 @@ static void jtag_tap_handle_event(jtag_tap_t *tap, enum jtag_event e) * can't fail. That presumes later code * will be verifying the scan chains ... */ - tap->enabled = (e == JTAG_TAP_EVENT_ENABLE); + if (e == JTAG_TAP_EVENT_ENABLE) + tap->enabled = true; } } |