void put_key_on_list (gpointer key, gpointer val, gpointer data)
{
GList** l;
- l = (GList**) l;
- *l = g_list_prepend (*l, key);
+ l = (GList**) data;
+ *l = g_list_prepend (*l, symbol_copy (key));
}
GList* first_get (GHashTable* first, symbol_t* symbol)
if (g_hash_table_lookup_extended (first, symbol, NULL,
(gpointer*) &first_set))
{
- g_hash_table_foreach (first->terminals, put_key_on_list, &l);
+ if (first_set->has_empty)
+ l = g_list_prepend (l, symbol_new (TRUE, 0));
+ g_hash_table_foreach (first_set->terminals, put_key_on_list, &l);
}
return l;