Hi,

2016/3/17 Thu 1:39:40 UTC+9 Ken Takata wrote:
> Hi,
> 
> 2016/3/16 Wed 3:33:55 UTC+9 Bram Moolenaar wrote:
> > Patch 7.4.1577
> > Problem:    Cannot pass "dict.Myfunc" around as a partial.
> > Solution:   Create a partial when expected.
> > Files:      src/eval.c, src/testdir/test_partial.vim
> 
> 
> > +     if (rettv->v_type == VAR_FUNC && selfdict != NULL)
> > +     {
> > +   partial_T       *pt = (partial_T *)alloc_clear(sizeof(partial_T));
> > + 
> > +   /* Turn "dict.Func" into a partial for "Func" with "dict". */
> > +   if (pt != NULL)
> > +   {
> > +       pt->pt_dict = selfdict;
> > +       selfdict = NULL;
> > +       pt->pt_name = rettv->vval.v_string;
> > +       func_ref(pt->pt_name);
> > +       rettv->v_type = VAR_PARTIAL;
> > +       rettv->vval.v_partial = pt;
> > +   }
> > +     }
> 
> I'm not sure, but it seems that this if block has some problems.
> When I comment out this block, the issue #690 disappears (even without mattn's
> patch).

Ah! How about this.

--- a/src/eval.c
+++ b/src/eval.c
@@ -21733,6 +21733,7 @@ handle_subscript(
            pt->pt_dict = selfdict;
            selfdict = NULL;
            pt->pt_name = rettv->vval.v_string;
+           pt->pt_refcount = 1;
            func_ref(pt->pt_name);
            rettv->v_type = VAR_PARTIAL;
            rettv->vval.v_partial = pt;


Regards,
Ken Takata

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui