Ois,
misteriosamente, quando inseríamos novos itens na nossa symbol table, eles estavam sobrescrevendo os que lá já estavam. Investigando mais de perto, (imprimindo os endereços de memória depois de um malloc), vi que sempre que críavamos um novo nó para nossa lista de ligada, ele apontava pra um mesmo endereço.
O que pode estar acontecendo? Como resolver?
trecho relevante:
EntryData *dat = stable_find(table, key);
if (dat == NULL) {[...]
Node *n = malloc(sizeof(Node));
printf("%p\n", (void*);
}
resultado:
0x7ffd59ce7280
0x7ffd59ce7280
0x7ffd59ce7280