From 78c6b922e21849ed8a2d3af4ca55c84c3d1ac185 Mon Sep 17 00:00:00 2001 From: David Brownell Date: Fri, 13 Nov 2009 16:26:39 -0800 Subject: ETM: simplify ETM initialization code paths Return NULL from etm_build_reg_cache() not ERROR_OK; and share code on that fault path. Let ETM code handle any tracking of its cache -- not callers. Signed-off-by: David Brownell --- src/target/etm.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/target/etm.c') diff --git a/src/target/etm.c b/src/target/etm.c index 43158b56..4c94e6bf 100644 --- a/src/target/etm.c +++ b/src/target/etm.c @@ -349,10 +349,7 @@ struct reg_cache *etm_build_reg_cache(struct target *target, break; default: LOG_WARNING("Bad ETMv1 protocol %d", config >> 28); - free(reg_cache); - free(reg_list); - free(arch_info); - return ERROR_OK; + goto fail; } } etm_ctx->bcd_vers = bcd_vers; @@ -396,10 +393,7 @@ struct reg_cache *etm_build_reg_cache(struct target *target, if (!etb) { LOG_ERROR("etb selected as etm capture driver, but no ETB configured"); - free(reg_cache); - free(reg_list); - free(arch_info); - return ERROR_OK; + goto fail; } reg_cache->next = etb_build_reg_cache(etb); @@ -409,6 +403,12 @@ struct reg_cache *etm_build_reg_cache(struct target *target, etm_ctx->reg_cache = reg_cache; return reg_cache; + +fail: + free(reg_cache); + free(reg_list); + free(arch_info); + return NULL; } static int etm_read_reg(struct reg *reg) -- cgit v1.2.3