comparison src/channel.c @ 9626:172131507c85 v7.4.2090

commit https://github.com/vim/vim/commit/df48fb456fb6bf63d94cad9b302ff01d8ee8d311 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jul 22 21:50:18 2016 +0200 patch 7.4.2090 Problem: Using submatch() in a lambda passed to substitute() is verbose. Solution: Use a static list and pass it as an optional argument to the function. Fix memory leak.
author Christian Brabandt <cb@256bit.org>
date Fri, 22 Jul 2016 22:00:07 +0200
parents 581d5131629f
children b74515b8f3d4
comparison
equal deleted inserted replaced
9625:4c2524dd2403 9626:172131507c85
1531 EMSG("INTERNAL: Invoking callback when it is not safe"); 1531 EMSG("INTERNAL: Invoking callback when it is not safe");
1532 1532
1533 argv[0].v_type = VAR_CHANNEL; 1533 argv[0].v_type = VAR_CHANNEL;
1534 argv[0].vval.v_channel = channel; 1534 argv[0].vval.v_channel = channel;
1535 1535
1536 call_func(callback, (int)STRLEN(callback), 1536 call_func(callback, (int)STRLEN(callback), &rettv, 2, argv, NULL,
1537 &rettv, 2, argv, 0L, 0L, &dummy, TRUE, partial, NULL); 1537 0L, 0L, &dummy, TRUE, partial, NULL);
1538 clear_tv(&rettv); 1538 clear_tv(&rettv);
1539 channel_need_redraw = TRUE; 1539 channel_need_redraw = TRUE;
1540 } 1540 }
1541 1541
1542 /* 1542 /*
2693 ch_logs(channel, "Invoking close callback %s", 2693 ch_logs(channel, "Invoking close callback %s",
2694 (char *)channel->ch_close_cb); 2694 (char *)channel->ch_close_cb);
2695 argv[0].v_type = VAR_CHANNEL; 2695 argv[0].v_type = VAR_CHANNEL;
2696 argv[0].vval.v_channel = channel; 2696 argv[0].vval.v_channel = channel;
2697 call_func(channel->ch_close_cb, (int)STRLEN(channel->ch_close_cb), 2697 call_func(channel->ch_close_cb, (int)STRLEN(channel->ch_close_cb),
2698 &rettv, 1, argv, 0L, 0L, &dummy, TRUE, 2698 &rettv, 1, argv, NULL, 0L, 0L, &dummy, TRUE,
2699 channel->ch_close_partial, NULL); 2699 channel->ch_close_partial, NULL);
2700 clear_tv(&rettv); 2700 clear_tv(&rettv);
2701 channel_need_redraw = TRUE; 2701 channel_need_redraw = TRUE;
2702 } 2702 }
2703 2703
4756 argv[0].v_type = VAR_JOB; 4756 argv[0].v_type = VAR_JOB;
4757 argv[0].vval.v_job = job; 4757 argv[0].vval.v_job = job;
4758 argv[1].v_type = VAR_NUMBER; 4758 argv[1].v_type = VAR_NUMBER;
4759 argv[1].vval.v_number = job->jv_exitval; 4759 argv[1].vval.v_number = job->jv_exitval;
4760 call_func(job->jv_exit_cb, (int)STRLEN(job->jv_exit_cb), 4760 call_func(job->jv_exit_cb, (int)STRLEN(job->jv_exit_cb),
4761 &rettv, 2, argv, 0L, 0L, &dummy, TRUE, 4761 &rettv, 2, argv, NULL, 0L, 0L, &dummy, TRUE,
4762 job->jv_exit_partial, NULL); 4762 job->jv_exit_partial, NULL);
4763 clear_tv(&rettv); 4763 clear_tv(&rettv);
4764 --job->jv_refcount; 4764 --job->jv_refcount;
4765 channel_need_redraw = TRUE; 4765 channel_need_redraw = TRUE;
4766 } 4766 }