Hrvoje Niksic <hniksic(a)srce.hr> writes:
This has been fixed long ago.
Not good enough. I am pretty sure the x-win-init-sun crash reported
for 21.0.67 is due to this. As I wrote before
But purified aggregate objects like lists and vectors can
contain uninterned symbols. If there are no other non-pure
references to the symbol, then the symbol is not protected
from garbage collection because the collector does not mark
the contents of purified objects.
This is a good description of the problem
So to protect the symbols,
an impure reference has to be kept for each uninterned symbol
that is referenced by a pure object. All such symbols are
stored in the hash table pointed to by
Vpure_uninterned_symbol_table, which is itself
staticpro'd. */
And this is a good solution
if (NILP (XSYMBOL (obj)->obarray))
Fputhash (obj, Qnil, Vpure_uninterned_symbol_table);
return obj;
}
However, this is incomplete. What happens if I unintern it later (as
x-win-init-sun does)? This code needs to set some flag such that
unintern can add it to Vpure_uninterned_symbol_table later.
Jan