V0.9 - Don't free a NULL iterator in $dumpvars.

This patch fixes two places where Icarus under certain conditions
would try to free a NULL iterator value in $dumpvars(). $dumpvars()
can have a NULL argument to indicate that all variables should be
dumped. Under two error conditions the code was trying to free
this NULL argument reference.

The standard does not define if vpi_free_object() can support a
NULL reference. Icarus does not currently allow it (it asserts).
This commit is contained in:
Cary R 2010-04-29 18:25:23 -07:00 committed by Stephen Williams
parent 7a363625d4
commit 385b211851
3 changed files with 9 additions and 9 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002-2009 Stephen Williams (steve@icarus.com)
* Copyright (c) 2002-2010 Stephen Williams (steve@icarus.com)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
@ -730,13 +730,13 @@ static PLI_INT32 sys_dumpvars_calltf(PLI_BYTE8*name)
if (dump_file == 0) {
open_dumpfile(callh);
if (dump_file == 0) {
vpi_free_object(argv);
if (argv) vpi_free_object(argv);
return 0;
}
}
if (install_dumpvars_callback()) {
vpi_free_object(argv);
if (argv) vpi_free_object(argv);
return 0;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003-2009 Stephen Williams (steve@icarus.com)
* Copyright (c) 2003-2010 Stephen Williams (steve@icarus.com)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
@ -741,13 +741,13 @@ static PLI_INT32 sys_dumpvars_calltf(PLI_BYTE8*name)
if (dump_file == 0) {
open_dumpfile(callh);
if (dump_file == 0) {
vpi_free_object(argv);
if (argv) vpi_free_object(argv);
return 0;
}
}
if (install_dumpvars_callback()) {
vpi_free_object(argv);
if (argv) vpi_free_object(argv);
return 0;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1999-2009 Stephen Williams (steve@icarus.com)
* Copyright (c) 1999-2010 Stephen Williams (steve@icarus.com)
*
* This source code is free software; you can redistribute it
* and/or modify it in source code form under the terms of the GNU
@ -755,13 +755,13 @@ static PLI_INT32 sys_dumpvars_calltf(PLI_BYTE8*name)
if (dump_file == 0) {
open_dumpfile(callh);
if (dump_file == 0) {
vpi_free_object(argv);
if (argv) vpi_free_object(argv);
return 0;
}
}
if (install_dumpvars_callback()) {
vpi_free_object(argv);
if (argv) vpi_free_object(argv);
return 0;
}