Mercurial > vim
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 } |