Mercurial > octave
diff src/symtab.cc @ 186:7a647cf4850c
[project @ 1993-10-25 23:15:50 by jwe]
author | jwe |
---|---|
date | Mon, 25 Oct 1993 23:15:50 +0000 |
parents | 49ab724d0a32 |
children | b6b4d8c513fe |
line wrap: on
line diff
--- a/src/symtab.cc Mon Oct 25 23:01:07 1993 +0000 +++ b/src/symtab.cc Mon Oct 25 23:15:50 1993 +0000 @@ -425,22 +425,33 @@ return status; } -void +int symbol_record::clear_visible (void) { - if (var != (symbol_def *) NULL && var->lifespan != symbol_def::eternal) + int status = 0; + + if (is_defined ()) { - if (--var->count <= 0) - delete var; - var = (symbol_def *) NULL; - forced_global = 0; + if (var != (symbol_def *) NULL + && var->lifespan != symbol_def::eternal) + { + if (--var->count <= 0) + delete var; + var = (symbol_def *) NULL; + forced_global = 0; + status = 1; + } + else if (fcn != (symbol_def *) NULL + && fcn->lifespan != symbol_def::eternal) + { + if (--fcn->count <= 0) + delete fcn; + fcn = (symbol_def *) NULL; + status = 1; + } } - else if (fcn != (symbol_def *) NULL && fcn->lifespan != symbol_def::eternal) - { - if (--fcn->count <= 0) - delete fcn; - fcn = (symbol_def *) NULL; - } + + return status; } void @@ -583,9 +594,8 @@ { if (strcmp (curr->name (), nm) == 0) { - curr->clear_visible (); - - return 1; + if (curr->clear_visible ()) + return 1; } prev = curr; curr = curr->next ();