segfaults fixed. need to verify what is being passed to functions.
This commit is contained in:
@ -968,10 +968,24 @@ void print_symbol_table(SymbolTable *table, FILE *file_ptr) {
|
||||
}*/
|
||||
void print_symbol_table(SymbolTable *table, FILE *file_ptr) {
|
||||
|
||||
if (table == NULL) {
|
||||
printdebug(
|
||||
"%s[FATAL] passed in NULL table to print_symbol_table",
|
||||
COLOR_RED);
|
||||
return;
|
||||
}
|
||||
|
||||
if (table->Parent_Scope != NULL) {
|
||||
printdebug("%s[WARNING] passed in a non-top level scope to "
|
||||
"print_symbol_table",
|
||||
COLOR_ORANGE);
|
||||
}
|
||||
|
||||
if (table->Parent_Scope == NULL) {
|
||||
fprintf(file_ptr, "%-17s: %-6s : %-6s : %-21s: %-28s\n", "NAME",
|
||||
"SCOPE", "PARENT", "TYPE", "Extra annotation");
|
||||
}
|
||||
|
||||
TableNode *entrie = table->entries;
|
||||
fprintf(file_ptr, "-----------------:--------:--------:----------------"
|
||||
"------:---------"
|
||||
@ -1213,7 +1227,19 @@ bool typeCheck(char *firstID, char *secondID) {
|
||||
return false;
|
||||
}
|
||||
|
||||
SymbolTable *getParent(SymbolTable *st) { return st->Parent_Scope; }
|
||||
SymbolTable *getParent(SymbolTable *st) {
|
||||
if (st == NULL) {
|
||||
printdebug("passed a NULL symbol table to getParent function. "
|
||||
"Invalid.");
|
||||
return NULL;
|
||||
}
|
||||
if (st->Parent_Scope == NULL) {
|
||||
printdebug("passed a top level scope to getParent function. "
|
||||
"Invalid.");
|
||||
return NULL;
|
||||
}
|
||||
return st->Parent_Scope;
|
||||
}
|
||||
|
||||
ListOfTable *getChildren(SymbolTable *st) { return st->Children_Scope; }
|
||||
SymbolTable *getFirstChild(ListOfTable *lt) { return lt->table; }
|
||||
@ -1222,17 +1248,16 @@ TableNode *getFirstEntry(SymbolTable *st) { return st->entries; }
|
||||
|
||||
// Segfaults when passed an invalid table node!
|
||||
TableNode *getNextEntry(TableNode *tn) {
|
||||
if (tn == NULL) {
|
||||
if (tn == NULL) {
|
||||
printdebug("passed a NULL table node to getNextEntry");
|
||||
return undefined;
|
||||
}
|
||||
if (tn == undefined) {
|
||||
}
|
||||
if (tn == undefined) {
|
||||
printdebug("passed an undefined table node to getNextEntry");
|
||||
return undefined;
|
||||
}
|
||||
return tn->next;
|
||||
}
|
||||
|
||||
return tn->next;
|
||||
}
|
||||
|
||||
// uncomment the below main function along with the headers above for a simple
|
||||
// standalone test of table and entry creation
|
||||
|
Reference in New Issue
Block a user