forked from aniani/vim
patch 8.1.1118: a couple of conditions are hard to understand
Problem: A couple of conditions are hard to understand. Solution: Split the conditions into pieces. (Ozaki Kiichi, closes #3879)
This commit is contained in:
parent
1cd4dc444a
commit
652de23dc7
@ -2030,6 +2030,8 @@ vgetorpeek(int advance)
|
|||||||
*/
|
*/
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
long wait_time;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ui_breakcheck() is slow, don't use it too often when
|
* ui_breakcheck() is slow, don't use it too often when
|
||||||
* inside a mapping. But call it each time for typed
|
* inside a mapping. But call it each time for typed
|
||||||
@ -2828,18 +2830,25 @@ vgetorpeek(int advance)
|
|||||||
// that has a <Nop> RHS.
|
// that has a <Nop> RHS.
|
||||||
timedout = FALSE;
|
timedout = FALSE;
|
||||||
|
|
||||||
|
if (advance)
|
||||||
|
{
|
||||||
|
if (typebuf.tb_len == 0
|
||||||
|
|| !(p_timeout
|
||||||
|
|| (p_ttimeout && keylen == KEYLEN_PART_KEY)))
|
||||||
|
// blocking wait
|
||||||
|
wait_time = -1L;
|
||||||
|
else if (keylen == KEYLEN_PART_KEY && p_ttm >= 0)
|
||||||
|
wait_time = p_ttm;
|
||||||
|
else
|
||||||
|
wait_time = p_tm;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
wait_time = 0;
|
||||||
|
|
||||||
wait_tb_len = typebuf.tb_len;
|
wait_tb_len = typebuf.tb_len;
|
||||||
c = inchar(typebuf.tb_buf + typebuf.tb_off + typebuf.tb_len,
|
c = inchar(typebuf.tb_buf + typebuf.tb_off + typebuf.tb_len,
|
||||||
typebuf.tb_buflen - typebuf.tb_off - typebuf.tb_len - 1,
|
typebuf.tb_buflen - typebuf.tb_off - typebuf.tb_len - 1,
|
||||||
!advance
|
wait_time);
|
||||||
? 0
|
|
||||||
: ((typebuf.tb_len == 0
|
|
||||||
|| !(p_timeout || (p_ttimeout
|
|
||||||
&& keylen == KEYLEN_PART_KEY)))
|
|
||||||
? -1L
|
|
||||||
: ((keylen == KEYLEN_PART_KEY && p_ttm >= 0)
|
|
||||||
? p_ttm
|
|
||||||
: p_tm)));
|
|
||||||
|
|
||||||
#ifdef FEAT_CMDL_INFO
|
#ifdef FEAT_CMDL_INFO
|
||||||
if (i != 0)
|
if (i != 0)
|
||||||
|
@ -5607,19 +5607,25 @@ mch_job_start(char **argv, job_T *job, jobopt_T *options, int is_terminal)
|
|||||||
close(fd_err[1]);
|
close(fd_err[1]);
|
||||||
if (channel != NULL)
|
if (channel != NULL)
|
||||||
{
|
{
|
||||||
int in_fd = use_file_for_in || use_null_for_in
|
int in_fd = INVALID_FD;
|
||||||
? INVALID_FD : fd_in[1] < 0 ? pty_master_fd : fd_in[1];
|
int out_fd = INVALID_FD;
|
||||||
int out_fd = use_file_for_out || use_null_for_out
|
int err_fd = INVALID_FD;
|
||||||
? INVALID_FD : fd_out[0] < 0 ? pty_master_fd : fd_out[0];
|
|
||||||
/* When using pty_master_fd only set it for stdout, do not duplicate it
|
if (!(use_file_for_in || use_null_for_in))
|
||||||
* for stderr, it only needs to be read once. */
|
in_fd = fd_in[1] >= 0 ? fd_in[1] : pty_master_fd;
|
||||||
int err_fd = use_out_for_err || use_file_for_err || use_null_for_err
|
|
||||||
? INVALID_FD
|
if (!(use_file_for_out || use_null_for_out))
|
||||||
: fd_err[0] >= 0
|
out_fd = fd_out[0] >= 0 ? fd_out[0] : pty_master_fd;
|
||||||
? fd_err[0]
|
|
||||||
: (out_fd == pty_master_fd
|
// When using pty_master_fd only set it for stdout, do not duplicate
|
||||||
? INVALID_FD
|
// it for stderr, it only needs to be read once.
|
||||||
: pty_master_fd);
|
if (!(use_out_for_err || use_file_for_err || use_null_for_err))
|
||||||
|
{
|
||||||
|
if (fd_err[0] >= 0)
|
||||||
|
err_fd = fd_err[0];
|
||||||
|
else if (out_fd != pty_master_fd)
|
||||||
|
err_fd = pty_master_fd;
|
||||||
|
}
|
||||||
|
|
||||||
channel_set_pipes(channel, in_fd, out_fd, err_fd);
|
channel_set_pipes(channel, in_fd, out_fd, err_fd);
|
||||||
channel_set_job(channel, job, options);
|
channel_set_job(channel, job, options);
|
||||||
|
@ -771,6 +771,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1118,
|
||||||
/**/
|
/**/
|
||||||
1117,
|
1117,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user