target/espressif: fix clang report on list use
It looks like a false positive.
Scan-build considers as possible to:
- have list_empty() return false;
- list_for_each_safe() to not execute any loop, thus not assigning
a non-NULL value to 'block';
- the NULL pointer 'block' is passed to list_del().
This is not possible because with list_empty(), the loop runs at
least once.
Rewrite the function to simplify the code and making it easier for
scan-build to check it.
This also drops an incorrect use of list_for_each_safe(), where
the 'safe' version was not required.
Change-Id: Ia8b1d221cf9df73db1196e3f51986023dcaf78eb
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Fixes: 8d1dcf293a
("target/espressif: add application tracing functionality over JTAG")
Reviewed-on: https://review.openocd.org/c/openocd/+/7608
Reviewed-by: Erhan Kurubas <erhan.kurubas@espressif.com>
Tested-by: jenkins
This commit is contained in:
parent
c1dc7935f7
commit
8670ad4caa
|
@ -356,18 +356,14 @@ static int esp32_apptrace_ready_block_put(struct esp32_apptrace_cmd_ctx *ctx, st
|
|||
|
||||
static struct esp32_apptrace_block *esp32_apptrace_ready_block_get(struct esp32_apptrace_cmd_ctx *ctx)
|
||||
{
|
||||
struct esp32_apptrace_block *block = NULL;
|
||||
if (list_empty(&ctx->ready_trace_blocks))
|
||||
return NULL;
|
||||
|
||||
if (!list_empty(&ctx->ready_trace_blocks)) {
|
||||
struct list_head *head = &ctx->ready_trace_blocks;
|
||||
struct list_head *tmp, *pos;
|
||||
struct esp32_apptrace_block *block =
|
||||
list_last_entry(&ctx->ready_trace_blocks, struct esp32_apptrace_block, node);
|
||||
|
||||
list_for_each_safe(pos, tmp, head) {
|
||||
block = list_entry(pos, struct esp32_apptrace_block, node);
|
||||
}
|
||||
/* remove it from ready list */
|
||||
list_del(&block->node);
|
||||
}
|
||||
/* remove it from ready list */
|
||||
list_del(&block->node);
|
||||
|
||||
return block;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue