[Plib-cvs] plib/src/psl pslCompiler.h,1.31,1.32 pslProgram.cxx,1.15,1.16
Brought to you by:
sjbaker
From: Steve B. <sj...@us...> - 2002-10-30 12:33:03
|
Update of /cvsroot/plib/plib/src/psl In directory usw-pr-cvs1:/tmp/cvs-serv19952/plib/src/psl Modified Files: pslCompiler.h pslProgram.cxx Log Message: Fixed double-delete problem that crashed PSL applications when a pslProgram was deleted. Index: pslCompiler.h =================================================================== RCS file: /cvsroot/plib/plib/src/psl/pslCompiler.h,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- pslCompiler.h 22 Sep 2002 18:25:16 -0000 1.31 +++ pslCompiler.h 30 Oct 2002 12:32:58 -0000 1.32 @@ -40,6 +40,8 @@ return symbol != NULL && strcmp ( s, symbol ) == 0 ; } + pslFwdRef () { symbol = NULL ; } + ~pslFwdRef () { delete [] symbol ; } } ; @@ -334,9 +336,9 @@ { delete [] define_token [ i ] ; delete [] define_replacement [ i ] ; - delete [] symtab [ i ] . symbol ; - delete [] code_symtab [ i ] . symbol ; - delete [] forward_ref [ i ] . symbol ; + delete [] symtab [ i ] . symbol ; symtab [ i ] . symbol = NULL ; + delete [] code_symtab [ i ] . symbol ; code_symtab [ i ] . symbol = NULL ; + delete [] forward_ref [ i ] . symbol ; forward_ref [ i ] . symbol = NULL ; } } Index: pslProgram.cxx =================================================================== RCS file: /cvsroot/plib/plib/src/psl/pslProgram.cxx,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- pslProgram.cxx 22 Sep 2002 15:22:21 -0000 1.15 +++ pslProgram.cxx 30 Oct 2002 12:32:59 -0000 1.16 @@ -36,7 +36,7 @@ progName = NULL ; - if ( _prgnm == NULL ) _prgnm = "PSLptogram" ; + if ( _prgnm == NULL ) _prgnm = "PSLprogram" ; setProgName ( _prgnm ) ; @@ -67,6 +67,9 @@ setProgName ( _prgnm ) ; + /* This will fail if this pslProgram is ever deleted */ + /* We need ref-counting on code/compiler */ + code = src -> getCode () ; compiler = src -> getCompiler () ; extensions = src -> getExtensions () ; @@ -79,6 +82,9 @@ pslProgram::~pslProgram () { + /* This will fail if this pslProgram was copy-constructed */ + /* We need ref-counting on code/compiler */ + /* DEBUG-ME! */ delete [] progName ; delete compiler ; delete context ; |