/* addSymChain - adds a symbol chain to the symboltable */
/*------------------------------------------------------------------*/
void
-addSymChain (symbol * symHead)
+addSymChain (symbol ** symHead)
{
- symbol *sym = symHead;
+ symbol *sym = *symHead;
symbol *csym = NULL;
+ symbol **symPtrPtr;
int error = 0;
for (; sym != NULL; sym = sym->next)
/* delete current entry */
deleteSym (SymbolTab, csym, csym->name);
deleteFromSeg(csym);
+
+ symPtrPtr = symHead;
+ while (*symPtrPtr && *symPtrPtr != csym)
+ symPtrPtr = &(*symPtrPtr)->next;
+ if (*symPtrPtr == csym)
+ *symPtrPtr = csym->next;
+
}
/* add new entry */
SPEC_STAT (func->etype);
}
#endif
- addSymChain (val->sym);
+ addSymChain (&val->sym);
}
else /* symbol name given create synth name */