On Wed, Sep 29, 1999 at 10:10:21PM +0200, Jan Vroonhof wrote:
Breakpoint 1, Fset (sym=-1607917740, newval=539754752)
at /scratch/vroonhof/cvs/xemacs-20/src/symbols.c:1610
1610 CHECK_SYMBOL (sym);
(gdb) pobj sym
$19 = (struct Lisp_Symbol *) 0x291f54
$20 = {next = 0x0, name = 0x1a4db0, value = 539232016, function = 539232016,
plist = -1608015868, obarray_flags = 7}
Symbol name: device
(gdb) step
1613 valcontents = XSYMBOL (sym)->value;
(gdb) next
1614 if (NILP (sym) || EQ (sym, Qt) || SYMBOL_VALUE_MAGIC_P (valcontents)
(gdb) next
1628 switch (XSYMBOL_VALUE_MAGIC_TYPE (valcontents))
(gdb) pobj valcontents
$21 = (struct symbol_value_forward *) 0x240710
$22 = {magic = {lcheader = {lheader = {implementation = 0x17cc30}, next = 0x0,
uid = 69, free = 0}, type = SYMVAL_UNBOUND_MARKER},
magicfun = 0x16c80c <lrecord_subr>}
(gdb) step
switch (XSYMBOL_VALUE_MAGIC_TYPE (valcontents))
{
case SYMVAL_LISP_MAGIC:
[...]
case SYMVAL_VARALIAS:
[...]
case SYMVAL_FIXNUM_FORWARD:
case SYMVAL_BOOLEAN_FORWARD:
case SYMVAL_OBJECT_FORWARD:
case SYMVAL_DEFAULT_BUFFER_FORWARD:
case SYMVAL_DEFAULT_CONSOLE_FORWARD:
[...]
case SYMVAL_SELECTED_CONSOLE_FORWARD:
[...]
case SYMVAL_BUFFER_LOCAL:
case SYMVAL_SOME_BUFFER_LOCAL:
[...]
default:
abort ();
}
No SYMVAL_UNBOUND_MARKER, the code takes the default branch, abort();.
This is exactly what currently happens with the portable dumper.
The solution may be to add the case and put a sym->value = newval in
it, but I'm far from understanding the code enough to be sure.
OG.