- 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
__archive__
oharboe 2009-09-09 07:09:14 +00:00
parent aa46b15377
commit 983f5a1ae9
1 changed files with 10 additions and 4 deletions

View File

@ -141,9 +141,11 @@ static int jtag_tap_configure_cmd(Jim_GetOptInfo *goi, jtag_tap_t * tap)
} }
if (goi->isconfigure) { if (goi->isconfigure) {
bool replace = true;
if (jteap == NULL) { if (jteap == NULL) {
/* create new */ /* create new */
jteap = calloc(1, sizeof (*jteap)); jteap = calloc(1, sizeof (*jteap));
replace = false;
} }
jteap->event = n->value; jteap->event = n->value;
Jim_GetOpt_Obj(goi, &o); 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); jteap->body = Jim_DuplicateObj(goi->interp, o);
Jim_IncrRefCount(jteap->body); Jim_IncrRefCount(jteap->body);
if (!replace)
{
/* add to head of event list */ /* add to head of event list */
jteap->next = tap->event_action; jteap->next = tap->event_action;
tap->event_action = jteap; tap->event_action = jteap;
}
Jim_SetEmptyResult(goi->interp); Jim_SetEmptyResult(goi->interp);
} else { } else {
/* get */ /* 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 * can't fail. That presumes later code
* will be verifying the scan chains ... * will be verifying the scan chains ...
*/ */
tap->enabled = (e == JTAG_TAP_EVENT_ENABLE); if (e == JTAG_TAP_EVENT_ENABLE)
tap->enabled = true;
} }
} }