hosted/dap: Copy command buffer in wait/retry loop.

The same buffer is used for both command and response, causing part of
the command to be overwritten before it’s retried. Solve this by saving
and restoring a copy of the command before retrying.
This commit is contained in:
Vegard Storheil Eriksen 2021-10-05 22:02:24 +02:00 committed by UweBonnes
parent f69f29a660
commit 7ccbdd98c0
1 changed files with 4 additions and 0 deletions

View File

@ -323,10 +323,14 @@ static void dap_line_reset(void)
static uint32_t wait_word(uint8_t *buf, int size, int len, uint8_t *dp_fault)
{
uint8_t cmd_copy[len];
memcpy(cmd_copy, buf, len);
do {
dbg_dap_cmd(buf, size, len);
if (buf[1] < DAP_TRANSFER_WAIT)
break;
if (buf[1] == DAP_TRANSFER_WAIT)
memcpy(buf, cmd_copy, len);
} while (buf[1] == DAP_TRANSFER_WAIT);
if (buf[1] > DAP_TRANSFER_WAIT) {