target/riscv-011: Fix memory leak in handle_halt_routine()
authorMarc Schink <openocd-dev@marcschink.de>
Wed, 6 Feb 2019 11:07:10 +0000 (12:07 +0100)
committerTomas Vanek <vanekt@fbl.cz>
Thu, 14 Feb 2019 09:28:33 +0000 (09:28 +0000)
Tested with SiFive HiFive1 development board.

Change-Id: Ie0d9fa0899804d17ccdd84b03ba4028e97b632b8
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/4884
Tested-by: jenkins
Reviewed-by: Tim Newsome <tim@sifive.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/target/riscv/riscv-011.c

index 3820d8fc0ff896479d243a77e987a711ddc0239f..bd3f159fbeebd213683cb8eefc68867f8f695579 100644 (file)
@@ -1806,6 +1806,8 @@ static riscv_error_t handle_halt_routine(struct target *target)
                }
        }
 
+       scans_delete(scans);
+
        if (dbus_busy) {
                increase_dbus_busy_delay(target);
                return RE_AGAIN;
@@ -1819,8 +1821,6 @@ static riscv_error_t handle_halt_routine(struct target *target)
        info->dpc = reg_cache_get(target, CSR_DPC);
        info->dcsr = reg_cache_get(target, CSR_DCSR);
 
-       scans_delete(scans);
-
        cache_invalidate(target);
 
        return RE_OK;