tracking down issues in sym tree destructor still
[feisty_meow.git] / nucleus / library / nodes / symbol_tree.cpp
index dd96fea511897215f0da01d23000bf2bafb5f3b5..bd985a27a1c883f6790849ff8b2ab9c65b5c5a2b 100644 (file)
@@ -33,12 +33,14 @@ using namespace textual;
 
 namespace nodes {
 
+//hmmm: used for... explain please.
 class symbol_tree_associations : public symbol_table<symbol_tree *>
 {
 public:
   symbol_tree_associations(int estimated_elements)
       :  symbol_table<symbol_tree *>(estimated_elements) {}
   virtual ~symbol_tree_associations() {
+//hmmm: why was this here?  was it ever needed?
 //    for (int i = 0; i < symbols(); i++) {
 //      WHACK(use(i));
 //    }
@@ -91,8 +93,12 @@ outcome symbol_tree::prune(tree *to_zap_in)
   FUNCDEF("prune");
 #endif
   symbol_tree *to_zap = dynamic_cast<symbol_tree *>(to_zap_in);
-  if (!to_zap)
+  if (!to_zap) {
+#ifdef DEBUG_SYMBOL_TREE
+    LOG("about to barf due to null symtree after dynamic cast.");
+#endif
     throw("error: symbol_tree::prune: wrong type of node in prune");
+  }
 #ifdef DEBUG_SYMBOL_TREE
   LOG(astring("zapping node for ") + to_zap->name());
 #endif
@@ -141,7 +147,7 @@ symbol_tree *symbol_tree::find(const astring &to_find, find_methods how,
 #ifdef DEBUG_SYMBOL_TREE
   FUNCDEF("find");
 #endif
-  if (comp == NIL) comp = astring_comparator;
+  if (comp == NULL_POINTER) comp = astring_comparator;
 #ifdef DEBUG_SYMBOL_TREE
   LOG(astring("finding node called ") + to_find);
 #endif
@@ -151,7 +157,7 @@ symbol_tree *symbol_tree::find(const astring &to_find, find_methods how,
   // perform the upward recursion first, since it's pretty simple.
   if (how == recurse_upward) {
     symbol_tree *our_parent = dynamic_cast<symbol_tree *>(parent());
-    if (!our_parent) return NIL;  // done recursing.
+    if (!our_parent) return NULL_POINTER;  // done recursing.
     return our_parent->find(to_find, how, comp);
   }
 
@@ -164,7 +170,7 @@ symbol_tree *symbol_tree::find(const astring &to_find, find_methods how,
   if (!found) {
     if (how == recurse_downward) {
       // see if we can't find that name in a sub-node.
-      symbol_tree *answer = NIL;
+      symbol_tree *answer = NULL_POINTER;
       for (int i = 0; i < branches(); i++) {
         // we will try each branch in turn and see if it has a child named
         // appropriately.
@@ -178,7 +184,7 @@ symbol_tree *symbol_tree::find(const astring &to_find, find_methods how,
           return answer;
       }
     }
-    return NIL;
+    return NULL_POINTER;
   }
   return *found;
 }