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;