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 ();