> I think this time I got it right -- your change was not entirely correct:
> imagine a FASL that does not exit read_VV but starts a toplevel. Then
> cl_core.packages_to_be_created might have the wrong value.

Anything called before read_VV exits and restores the var will be
in the context that allows referencing undefined packages. The only
way to fix it is to decouple this read mode flag from the state of
packages_to_be_created list, and set it only for the duration of
the part of read_VV that actually reads the symbols.

All that this line does is properly propagate removes from the
list, which are done when nested fasl loads define packages:

> > -                /* old_eptbc = cl_core.packages_to_be_created; */
> > +               if (old_eptbc != OBJNULL)
> > +                       old_eptbc = cl_core.packages_to_be_created;

The bug was that it also lost the special OBJNULL state that
marks absense of any fasl-loading on the stack, so after any
one fasl was loaded, the reader became always permissive.

Blocking this propagation of removes may also have the effect
of damaging packages that were already supposedly taken off 
the list if somebody does a redundant make-package call.

Alexander

------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Ecls-list mailing list
Ecls-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ecls-list

Reply via email to