From: oharboe Date: Wed, 9 Sep 2009 07:09:14 +0000 (+0000) Subject: - Fix bug-in-waiting when adding more than one TAP event type X-Git-Tag: v0.3.0-rc0~270 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=983f5a1ae932d40109031cfec8162f820cfc6f39 - Fix bug-in-waiting when adding more than one TAP event type - Infinite loop bugfix when running tap configure a second time git-svn-id: svn://svn.berlios.de/openocd/trunk@2681 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c index defd6ef389..f81b682966 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; } }