From 35f3d7f60ee7be575f115c01ded20ef35bb68091 Mon Sep 17 00:00:00 2001 From: Cary R Date: Tue, 11 Aug 2009 16:35:49 -0700 Subject: [PATCH] Fix a few more minor memory leaks. This patch fixes a few more memory leaks that can happen under error conditions. --- vpi/sys_readmem.c | 10 ++++++++-- vpi/sys_scanf.c | 2 ++ vpi/sys_vcd.c | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/vpi/sys_readmem.c b/vpi/sys_readmem.c index 14976d253..8a522625f 100644 --- a/vpi/sys_readmem.c +++ b/vpi/sys_readmem.c @@ -293,7 +293,10 @@ static PLI_INT32 sys_readmem_calltf(PLI_BYTE8*name) if (process_params(mitem, start_item, stop_item, callh, name, &start_addr, &stop_addr, &addr_incr, - &min_addr, &max_addr)) return 0; + &min_addr, &max_addr)) { + free(fname); + return 0; + } /* Open the data file. */ file = fopen(fname, "r"); @@ -528,7 +531,10 @@ static PLI_INT32 sys_writemem_calltf(PLI_BYTE8*name) if (process_params(mitem, start_item, stop_item, callh, name, &start_addr, &stop_addr, &addr_incr, - &min_addr, &max_addr)) return 0; + &min_addr, &max_addr)) { + free(fname); + return 0; + } /* Open the data file. */ file = fopen(fname, "w"); diff --git a/vpi/sys_scanf.c b/vpi/sys_scanf.c index db64fc35e..e36ddcfa5 100644 --- a/vpi/sys_scanf.c +++ b/vpi/sys_scanf.c @@ -626,6 +626,7 @@ static PLI_INT32 sys_fscanf_compiletf(PLI_BYTE8*name) (int)vpi_get(vpiLineNo, callh)); vpi_printf("%s's first argument (fd) must be numeric.\n", name); vpi_control(vpiFinish, 1); + vpi_free_object(argv); return 0; } @@ -695,6 +696,7 @@ static PLI_INT32 sys_sscanf_compiletf(PLI_BYTE8*name) vpi_printf("%s's first argument must be a register or constant " "string.\n", name); vpi_control(vpiFinish, 1); + vpi_free_object(argv); return 0; } diff --git a/vpi/sys_vcd.c b/vpi/sys_vcd.c index c5b5c177f..904a80056 100644 --- a/vpi/sys_vcd.c +++ b/vpi/sys_vcd.c @@ -805,6 +805,7 @@ static PLI_INT32 sys_dumpvars_calltf(PLI_BYTE8*name) vpi_printf("VCD warning: skipping signal %s, " "it was previously included.\n", fullname); + free(scname); continue; } else { add_var = 1;