Bram,

I need to create a doubly linked list and since this will cause problem
with lockvar, I will just comment the lock/unlockvar commands. I am
wondering if you have any plans to fix this issue. The lockvar is a
great way to prevent accidental changes (and it already helped me once)
so I would rather not comment it.

-- 
Thank you,
Hari

On Sat, 7 Oct 2006 at 5:56pm, Hari Krishna Dara wrote:

>
> On Sat, 7 Oct 2006 at 3:32pm, Bram Moolenaar wrote:
>
> >
> > Hari Krishna Dara wrote:
> >
> > > The :lockvar and :unlockvar commands fail when there is a recursive
> > > references. E.g., try the below:
> > >
> > > :let a = {}
> > > :let b = {}
> > > :let a.b = b
> > > :let b:a = a
> > > :lockvar! a
> > > E743: variable nested too deep for (un)lock
> > >
> > > You could of course end up with more complicated indirect recursive
> > > references as well, so it should guard against it.
> >
> > Although it's correct as such, I know a trick to detect the same list or
> > dictionary is encountered a second time, and then don't recurse into it.
>
> Does that mean you will provide a patch? Also note that it could be
> a self recursion too (:let a.a = a).
>
> > > Also, just noticed that string() fails as well.
> > >
> > > :echo string(a)
> > > E724: variable nested too deep for displaying
> >
> > This is much harder to avoid.  It's very well possible that a list or
> > dictionary appears multiple times without a recursive reference.  In
> > that case it should be listed normally.  It's not easy to distinguish a
> > normal reference from a recursive reference.
>
> Why is it hard to distinguish a direct reference and indirect reference?
> In any case, this functionality is not much of a use unless you really
> want to be able to restore the original structure using eval(), but I
> doubt if string() has special semantics to preserve identities.
>
> > > There are probably others that would fail as well.
> >
> > What others?
>
> I just meant there could be others, but I looked at the list there
> shouldn't be any others.
>
>

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Reply via email to