]> git.sur5r.net Git - openocd/blobdiff - src/jtag/hla/hla_tcl.c
jtag: hla: tcl: fix inconsistent expected_id handling
[openocd] / src / jtag / hla / hla_tcl.c
index 9378427b05a3d14909eefa84c3d9b0e0c86a1a2f..73f78fc8a563563c04d9dab5e9f8d8db69832380 100644 (file)
@@ -39,20 +39,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;
 }