aboutsummaryrefslogtreecommitdiff
path: root/src/jtag
diff options
context:
space:
mode:
authorTomas Vanek <vanekt@fbl.cz>2018-03-22 00:20:15 +0100
committerMatthias Welwarsky <matthias@welwarsky.de>2018-03-30 10:15:23 +0100
commit6eba3777fca4a3e8c0d91dce9caedfeb9c08dc67 (patch)
treea8b46c489c58c2545af44fa8c6695baa27e26419 /src/jtag
parent37deb37593c20c05a4bb29e1d88671a1f7ec6548 (diff)
jtag/core, target: unregister JTAG events
Also call adapter_exit() before command_exit() as the latter releases Jim interpreter so JTAG events should be released before. Fixes memory leak reported by valgrind Change-Id: I493f3fcba34ea2b4234148e79a4e329c866e0f05 Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reviewed-on: http://openocd.zylin.com/4474 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
Diffstat (limited to 'src/jtag')
-rw-r--r--src/jtag/core.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/jtag/core.c b/src/jtag/core.c
index 0fbd327f..4522321a 100644
--- a/src/jtag/core.c
+++ b/src/jtag/core.c
@@ -1308,6 +1308,14 @@ void jtag_tap_free(struct jtag_tap *tap)
{
jtag_unregister_event_callback(&jtag_reset_callback, tap);
+ struct jtag_tap_event_action *jteap = tap->event_action;
+ while (jteap) {
+ struct jtag_tap_event_action *next = jteap->next;
+ Jim_DecrRefCount(jteap->interp, jteap->body);
+ free(jteap);
+ jteap = next;
+ }
+
free(tap->expected);
free(tap->expected_mask);
free(tap->expected_ids);