> 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