X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fjtag%2Fcore.c;h=4522321a7ace45eb0bb64a206ce63aaea0cfaa4d;hp=df4afeb9d42d157085d19c44553683f69c038a9d;hb=6eba3777fca4a3e8c0d91dce9caedfeb9c08dc67;hpb=63d768824550a9607daef9449eed422bd941ad32 diff --git a/src/jtag/core.c b/src/jtag/core.c index df4afeb9d4..4522321a7a 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); @@ -1315,7 +1323,6 @@ void jtag_tap_free(struct jtag_tap *tap) free(tap->chip); free(tap->tapname); free(tap->dotted_name); - free(tap->dap); free(tap); } @@ -1487,6 +1494,8 @@ int adapter_quit(void) t = n; } + dap_cleanup_all(); + return ERROR_OK; }