X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fjtag%2Ftcl.c;h=c916fb1ca186126b99f3c2566eace86f59664081;hp=dd2be1e5ad3f58e06794d5440841d559704aaf16;hb=20fcd0729e7187e8fe6a38ce53b0a1b95ea647fb;hpb=bb0ef230ca707252cbab93f1eb944b284a3c1e1d diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c index dd2be1e5ad..c916fb1ca1 100644 --- a/src/jtag/tcl.c +++ b/src/jtag/tcl.c @@ -434,20 +434,15 @@ static int jim_newtap_expected_id(Jim_Nvp *n, Jim_GetOptInfo *goi, return e; } - unsigned expected_len = sizeof(uint32_t) * pTap->expected_ids_cnt; - uint32_t *new_expected_ids = malloc(expected_len + sizeof(uint32_t)); - if (new_expected_ids == NULL) { + uint32_t *p = realloc(pTap->expected_ids, + (pTap->expected_ids_cnt + 1) * sizeof(uint32_t)); + if (!p) { Jim_SetResultFormatted(goi->interp, "no memory"); return JIM_ERR; } - memcpy(new_expected_ids, pTap->expected_ids, expected_len); - - new_expected_ids[pTap->expected_ids_cnt] = w; - - free(pTap->expected_ids); - pTap->expected_ids = new_expected_ids; - pTap->expected_ids_cnt++; + pTap->expected_ids = p; + pTap->expected_ids[pTap->expected_ids_cnt++] = w; return JIM_OK; } @@ -553,8 +548,15 @@ static int jim_newtap_cmd(Jim_GetOptInfo *goi) LOG_DEBUG("Creating New Tap, Chip: %s, Tap: %s, Dotted: %s, %d params", pTap->chip, pTap->tapname, pTap->dotted_name, goi->argc); + if (!transport_is_jtag()) { + /* SWD doesn't require any JTAG tap parameters */ + pTap->enabled = true; + jtag_tap_init(pTap); + return JIM_OK; + } + /* IEEE specifies that the two LSBs of an IR scan are 01, so make - * that the default. The "-irlen" and "-irmask" options are only + * that the default. The "-ircapture" and "-irmask" options are only * needed to cope with nonstandard TAPs, or to specify more bits. */ pTap->ir_capture_mask = 0x03;