aboutsummaryrefslogtreecommitdiff
path: root/src/target/register.c
diff options
context:
space:
mode:
authorPaul Fertser <fercerpav@gmail.com>2015-02-11 11:02:34 +0300
committerPaul Fertser <fercerpav@gmail.com>2015-03-09 06:40:21 +0000
commit11b6ab90fb59bb2f794bbf7ca4cb89964ead6280 (patch)
tree7d0a83e1c114a91c2088384a43e2ef566612164d /src/target/register.c
parentb71ae9b1a704a9631698d7d4a92b1dfdfc9a0f69 (diff)
downloadriscv-openocd-11b6ab90fb59bb2f794bbf7ca4cb89964ead6280.zip
riscv-openocd-11b6ab90fb59bb2f794bbf7ca4cb89964ead6280.tar.gz
riscv-openocd-11b6ab90fb59bb2f794bbf7ca4cb89964ead6280.tar.bz2
target/cortex_m: do not leak memory on reexamination
This bug was exposed by Valgrind. Change-Id: If50878664d928c0a44e309ca1452089c1ac71466 Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/2542 Tested-by: jenkins Reviewed-by: Stian Skjelstad <stian@nixia.no> Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/target/register.c')
-rw-r--r--src/target/register.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/target/register.c b/src/target/register.c
index 42b3b8b..1c1717c 100644
--- a/src/target/register.c
+++ b/src/target/register.c
@@ -72,6 +72,14 @@ struct reg_cache **register_get_last_cache_p(struct reg_cache **first)
return cache_p;
}
+void register_unlink_cache(struct reg_cache **cache_p, const struct reg_cache *cache)
+{
+ while (*cache_p && *cache_p != cache)
+ cache_p = &((*cache_p)->next);
+ if (*cache_p)
+ *cache_p = cache->next;
+}
+
/** Marks the contents of the register cache as invalid (and clean). */
void register_cache_invalidate(struct reg_cache *cache)
{