defend against a broken bytecode file containing a reference cycle

This commit is contained in:
Matthew Flatt 2010-08-17 12:48:03 -06:00
parent 2cb5de9581
commit db43d25559

View File

@ -4595,6 +4595,8 @@ static Scheme_Object *read_compact(CPort *port, int use_stack)
v = port->symtab[l];
if (!v) {
long save_pos = port->pos;
/* avoid cycles if marshaled form is broken: */
port->symtab[l] = scheme_false;
port->pos = port->shared_offsets[l - 1];
v = read_compact(port, 0);
port->pos = save_pos;