- 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
This commit is contained in:
oharboe 2009-09-09 07:09:14 +00:00
parent aa46b15377
commit 983f5a1ae9

View File

@ -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;
}
}