mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.4909: MODE_ enum entries names are too generic
Problem: MODE_ enum entries names are too generic. Solution: use CH_MODE_.
This commit is contained in:
parent
48a8a83303
commit
ac4174e166
@ -1274,7 +1274,7 @@ channel_set_options(channel_T *channel, jobopt_T *opt)
|
|||||||
|
|
||||||
// writing output to a buffer. Default mode is NL.
|
// writing output to a buffer. Default mode is NL.
|
||||||
if (!(opt->jo_set & JO_OUT_MODE))
|
if (!(opt->jo_set & JO_OUT_MODE))
|
||||||
channel->ch_part[PART_OUT].ch_mode = MODE_NL;
|
channel->ch_part[PART_OUT].ch_mode = CH_MODE_NL;
|
||||||
if (opt->jo_set & JO_OUT_BUF)
|
if (opt->jo_set & JO_OUT_BUF)
|
||||||
{
|
{
|
||||||
buf = buflist_findnr(opt->jo_io_buf[PART_OUT]);
|
buf = buflist_findnr(opt->jo_io_buf[PART_OUT]);
|
||||||
@ -1320,7 +1320,7 @@ channel_set_options(channel_T *channel, jobopt_T *opt)
|
|||||||
|
|
||||||
// writing err to a buffer. Default mode is NL.
|
// writing err to a buffer. Default mode is NL.
|
||||||
if (!(opt->jo_set & JO_ERR_MODE))
|
if (!(opt->jo_set & JO_ERR_MODE))
|
||||||
channel->ch_part[PART_ERR].ch_mode = MODE_NL;
|
channel->ch_part[PART_ERR].ch_mode = CH_MODE_NL;
|
||||||
if (opt->jo_io[PART_ERR] == JIO_OUT)
|
if (opt->jo_io[PART_ERR] == JIO_OUT)
|
||||||
buf = channel->ch_part[PART_OUT].ch_bufref.br_buf;
|
buf = channel->ch_part[PART_OUT].ch_bufref.br_buf;
|
||||||
else if (opt->jo_set & JO_ERR_BUF)
|
else if (opt->jo_set & JO_ERR_BUF)
|
||||||
@ -1445,7 +1445,7 @@ channel_open_func(typval_T *argvars)
|
|||||||
|
|
||||||
// parse options
|
// parse options
|
||||||
clear_job_options(&opt);
|
clear_job_options(&opt);
|
||||||
opt.jo_mode = MODE_JSON;
|
opt.jo_mode = CH_MODE_JSON;
|
||||||
opt.jo_timeout = 2000;
|
opt.jo_timeout = 2000;
|
||||||
if (get_job_options(&argvars[1], &opt,
|
if (get_job_options(&argvars[1], &opt,
|
||||||
JO_MODE_ALL + JO_CB_ALL + JO_TIMEOUT_ALL
|
JO_MODE_ALL + JO_CB_ALL + JO_TIMEOUT_ALL
|
||||||
@ -2051,9 +2051,9 @@ channel_collapse(channel_T *channel, ch_part_T part, int want_nl)
|
|||||||
|
|
||||||
last_node = node->rq_next;
|
last_node = node->rq_next;
|
||||||
len = node->rq_buflen + last_node->rq_buflen;
|
len = node->rq_buflen + last_node->rq_buflen;
|
||||||
if (want_nl || mode == MODE_LSP)
|
if (want_nl || mode == CH_MODE_LSP)
|
||||||
while (last_node->rq_next != NULL
|
while (last_node->rq_next != NULL
|
||||||
&& (mode == MODE_LSP
|
&& (mode == CH_MODE_LSP
|
||||||
|| channel_first_nl(last_node) == NULL))
|
|| channel_first_nl(last_node) == NULL))
|
||||||
{
|
{
|
||||||
last_node = last_node->rq_next;
|
last_node = last_node->rq_next;
|
||||||
@ -2118,7 +2118,7 @@ channel_save(channel_T *channel, ch_part_T part, char_u *buf, int len,
|
|||||||
return FAIL; // out of memory
|
return FAIL; // out of memory
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channel->ch_part[part].ch_mode == MODE_NL)
|
if (channel->ch_part[part].ch_mode == CH_MODE_NL)
|
||||||
{
|
{
|
||||||
// Drop any CR before a NL.
|
// Drop any CR before a NL.
|
||||||
p = node->rq_buffer;
|
p = node->rq_buffer;
|
||||||
@ -2309,7 +2309,7 @@ channel_parse_json(channel_T *channel, ch_part_T part)
|
|||||||
reader.js_cookie = channel;
|
reader.js_cookie = channel;
|
||||||
reader.js_cookie_arg = part;
|
reader.js_cookie_arg = part;
|
||||||
|
|
||||||
if (chanpart->ch_mode == MODE_LSP)
|
if (chanpart->ch_mode == CH_MODE_LSP)
|
||||||
status = channel_process_lsp_http_hdr(&reader);
|
status = channel_process_lsp_http_hdr(&reader);
|
||||||
|
|
||||||
// When a message is incomplete we wait for a short while for more to
|
// When a message is incomplete we wait for a short while for more to
|
||||||
@ -2320,20 +2320,20 @@ channel_parse_json(channel_T *channel, ch_part_T part)
|
|||||||
{
|
{
|
||||||
++emsg_silent;
|
++emsg_silent;
|
||||||
status = json_decode(&reader, &listtv,
|
status = json_decode(&reader, &listtv,
|
||||||
chanpart->ch_mode == MODE_JS ? JSON_JS : 0);
|
chanpart->ch_mode == CH_MODE_JS ? JSON_JS : 0);
|
||||||
--emsg_silent;
|
--emsg_silent;
|
||||||
}
|
}
|
||||||
if (status == OK)
|
if (status == OK)
|
||||||
{
|
{
|
||||||
// Only accept the response when it is a list with at least two
|
// Only accept the response when it is a list with at least two
|
||||||
// items.
|
// items.
|
||||||
if (chanpart->ch_mode == MODE_LSP && listtv.v_type != VAR_DICT)
|
if (chanpart->ch_mode == CH_MODE_LSP && listtv.v_type != VAR_DICT)
|
||||||
{
|
{
|
||||||
ch_error(channel, "Did not receive a LSP dict, discarding");
|
ch_error(channel, "Did not receive a LSP dict, discarding");
|
||||||
clear_tv(&listtv);
|
clear_tv(&listtv);
|
||||||
}
|
}
|
||||||
else if (chanpart->ch_mode != MODE_LSP &&
|
else if (chanpart->ch_mode != CH_MODE_LSP
|
||||||
(listtv.v_type != VAR_LIST || listtv.vval.v_list->lv_len < 2))
|
&& (listtv.v_type != VAR_LIST || listtv.vval.v_list->lv_len < 2))
|
||||||
{
|
{
|
||||||
if (listtv.v_type != VAR_LIST)
|
if (listtv.v_type != VAR_LIST)
|
||||||
ch_error(channel, "Did not receive a list, discarding");
|
ch_error(channel, "Did not receive a list, discarding");
|
||||||
@ -2563,7 +2563,7 @@ channel_get_json(
|
|||||||
list_T *l;
|
list_T *l;
|
||||||
typval_T *tv;
|
typval_T *tv;
|
||||||
|
|
||||||
if (channel->ch_part[part].ch_mode != MODE_LSP)
|
if (channel->ch_part[part].ch_mode != CH_MODE_LSP)
|
||||||
{
|
{
|
||||||
l = item->jq_value->vval.v_list;
|
l = item->jq_value->vval.v_list;
|
||||||
CHECK_LIST_MATERIALIZE(l);
|
CHECK_LIST_MATERIALIZE(l);
|
||||||
@ -2684,7 +2684,8 @@ channel_exe_cmd(channel_T *channel, ch_part_T part, typval_T *argv)
|
|||||||
{
|
{
|
||||||
char_u *cmd = argv[0].vval.v_string;
|
char_u *cmd = argv[0].vval.v_string;
|
||||||
char_u *arg;
|
char_u *arg;
|
||||||
int options = channel->ch_part[part].ch_mode == MODE_JS ? JSON_JS : 0;
|
int options = channel->ch_part[part].ch_mode == CH_MODE_JS
|
||||||
|
? JSON_JS : 0;
|
||||||
|
|
||||||
if (argv[1].v_type != VAR_STRING)
|
if (argv[1].v_type != VAR_STRING)
|
||||||
{
|
{
|
||||||
@ -2964,7 +2965,8 @@ channel_use_json_head(channel_T *channel, ch_part_T part)
|
|||||||
{
|
{
|
||||||
ch_mode_T ch_mode = channel->ch_part[part].ch_mode;
|
ch_mode_T ch_mode = channel->ch_part[part].ch_mode;
|
||||||
|
|
||||||
return ch_mode == MODE_JSON || ch_mode == MODE_JS || ch_mode == MODE_LSP;
|
return ch_mode == CH_MODE_JSON || ch_mode == CH_MODE_JS
|
||||||
|
|| ch_mode == CH_MODE_LSP;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3021,7 +3023,7 @@ may_invoke_callback(channel_T *channel, ch_part_T part)
|
|||||||
// Get any json message in the queue.
|
// Get any json message in the queue.
|
||||||
if (channel_get_json(channel, part, -1, FALSE, &listtv) == FAIL)
|
if (channel_get_json(channel, part, -1, FALSE, &listtv) == FAIL)
|
||||||
{
|
{
|
||||||
if (ch_mode == MODE_LSP)
|
if (ch_mode == CH_MODE_LSP)
|
||||||
// In the "lsp" mode, the http header and the json payload may
|
// In the "lsp" mode, the http header and the json payload may
|
||||||
// be received in multiple messages. So concatenate all the
|
// be received in multiple messages. So concatenate all the
|
||||||
// received messages.
|
// received messages.
|
||||||
@ -3033,7 +3035,7 @@ may_invoke_callback(channel_T *channel, ch_part_T part)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ch_mode == MODE_LSP)
|
if (ch_mode == CH_MODE_LSP)
|
||||||
{
|
{
|
||||||
dict_T *d = listtv->vval.v_dict;
|
dict_T *d = listtv->vval.v_dict;
|
||||||
dictitem_T *di;
|
dictitem_T *di;
|
||||||
@ -3092,7 +3094,7 @@ may_invoke_callback(channel_T *channel, ch_part_T part)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ch_mode == MODE_NL)
|
if (ch_mode == CH_MODE_NL)
|
||||||
{
|
{
|
||||||
char_u *nl = NULL;
|
char_u *nl = NULL;
|
||||||
char_u *buf;
|
char_u *buf;
|
||||||
@ -3169,7 +3171,7 @@ may_invoke_callback(channel_T *channel, ch_part_T part)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (seq_nr > 0 && (ch_mode != MODE_LSP || called_otc))
|
if (seq_nr > 0 && (ch_mode != CH_MODE_LSP || called_otc))
|
||||||
{
|
{
|
||||||
if (!called_otc)
|
if (!called_otc)
|
||||||
{
|
{
|
||||||
@ -3356,11 +3358,11 @@ channel_part_info(channel_T *channel, dict_T *dict, char *name, ch_part_T part)
|
|||||||
STRCPY(namebuf + tail, "mode");
|
STRCPY(namebuf + tail, "mode");
|
||||||
switch (chanpart->ch_mode)
|
switch (chanpart->ch_mode)
|
||||||
{
|
{
|
||||||
case MODE_NL: s = "NL"; break;
|
case CH_MODE_NL: s = "NL"; break;
|
||||||
case MODE_RAW: s = "RAW"; break;
|
case CH_MODE_RAW: s = "RAW"; break;
|
||||||
case MODE_JSON: s = "JSON"; break;
|
case CH_MODE_JSON: s = "JSON"; break;
|
||||||
case MODE_JS: s = "JS"; break;
|
case CH_MODE_JS: s = "JS"; break;
|
||||||
case MODE_LSP: s = "LSP"; break;
|
case CH_MODE_LSP: s = "LSP"; break;
|
||||||
}
|
}
|
||||||
dict_add_string(dict, namebuf, (char_u *)s);
|
dict_add_string(dict, namebuf, (char_u *)s);
|
||||||
|
|
||||||
@ -3901,18 +3903,18 @@ channel_read_block(
|
|||||||
readq_T *node;
|
readq_T *node;
|
||||||
|
|
||||||
ch_log(channel, "Blocking %s read, timeout: %d msec",
|
ch_log(channel, "Blocking %s read, timeout: %d msec",
|
||||||
mode == MODE_RAW ? "RAW" : "NL", timeout);
|
mode == CH_MODE_RAW ? "RAW" : "NL", timeout);
|
||||||
|
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
{
|
{
|
||||||
node = channel_peek(channel, part);
|
node = channel_peek(channel, part);
|
||||||
if (node != NULL)
|
if (node != NULL)
|
||||||
{
|
{
|
||||||
if (mode == MODE_RAW || (mode == MODE_NL
|
if (mode == CH_MODE_RAW || (mode == CH_MODE_NL
|
||||||
&& channel_first_nl(node) != NULL))
|
&& channel_first_nl(node) != NULL))
|
||||||
// got a complete message
|
// got a complete message
|
||||||
break;
|
break;
|
||||||
if (channel_collapse(channel, part, mode == MODE_NL) == OK)
|
if (channel_collapse(channel, part, mode == CH_MODE_NL) == OK)
|
||||||
continue;
|
continue;
|
||||||
// If not blocking or nothing more is coming then return what we
|
// If not blocking or nothing more is coming then return what we
|
||||||
// have.
|
// have.
|
||||||
@ -3932,7 +3934,7 @@ channel_read_block(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We have a complete message now.
|
// We have a complete message now.
|
||||||
if (mode == MODE_RAW || outlen != NULL)
|
if (mode == CH_MODE_RAW || outlen != NULL)
|
||||||
{
|
{
|
||||||
msg = channel_get_all(channel, part, outlen);
|
msg = channel_get_all(channel, part, outlen);
|
||||||
}
|
}
|
||||||
@ -4014,7 +4016,7 @@ channel_read_json_block(
|
|||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if (mode == MODE_LSP)
|
if (mode == CH_MODE_LSP)
|
||||||
// In the "lsp" mode, the http header and the json payload may be
|
// In the "lsp" mode, the http header and the json payload may be
|
||||||
// received in multiple messages. So concatenate all the received
|
// received in multiple messages. So concatenate all the received
|
||||||
// messages.
|
// messages.
|
||||||
@ -4201,7 +4203,7 @@ common_channel_read(typval_T *argvars, typval_T *rettv, int raw, int blob)
|
|||||||
vim_free(p);
|
vim_free(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (raw || mode == MODE_RAW || mode == MODE_NL)
|
else if (raw || mode == CH_MODE_RAW || mode == CH_MODE_NL)
|
||||||
rettv->vval.v_string = channel_read_block(channel, part,
|
rettv->vval.v_string = channel_read_block(channel, part,
|
||||||
timeout, raw, NULL);
|
timeout, raw, NULL);
|
||||||
else
|
else
|
||||||
@ -4578,13 +4580,13 @@ ch_expr_common(typval_T *argvars, typval_T *rettv, int eval)
|
|||||||
part_send = channel_part_send(channel);
|
part_send = channel_part_send(channel);
|
||||||
|
|
||||||
ch_mode = channel_get_mode(channel, part_send);
|
ch_mode = channel_get_mode(channel, part_send);
|
||||||
if (ch_mode == MODE_RAW || ch_mode == MODE_NL)
|
if (ch_mode == CH_MODE_RAW || ch_mode == CH_MODE_NL)
|
||||||
{
|
{
|
||||||
emsg(_(e_cannot_use_evalexpr_sendexpr_with_raw_or_nl_channel));
|
emsg(_(e_cannot_use_evalexpr_sendexpr_with_raw_or_nl_channel));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ch_mode == MODE_LSP)
|
if (ch_mode == CH_MODE_LSP)
|
||||||
{
|
{
|
||||||
dict_T *d;
|
dict_T *d;
|
||||||
dictitem_T *di;
|
dictitem_T *di;
|
||||||
@ -4637,7 +4639,7 @@ ch_expr_common(typval_T *argvars, typval_T *rettv, int eval)
|
|||||||
{
|
{
|
||||||
id = ++channel->ch_last_msg_id;
|
id = ++channel->ch_last_msg_id;
|
||||||
text = json_encode_nr_expr(id, &argvars[1],
|
text = json_encode_nr_expr(id, &argvars[1],
|
||||||
(ch_mode == MODE_JS ? JSON_JS : 0) | JSON_NL);
|
(ch_mode == CH_MODE_JS ? JSON_JS : 0) | JSON_NL);
|
||||||
}
|
}
|
||||||
if (text == NULL)
|
if (text == NULL)
|
||||||
return;
|
return;
|
||||||
@ -4654,7 +4656,7 @@ ch_expr_common(typval_T *argvars, typval_T *rettv, int eval)
|
|||||||
if (channel_read_json_block(channel, part_read, timeout, id, &listtv)
|
if (channel_read_json_block(channel, part_read, timeout, id, &listtv)
|
||||||
== OK)
|
== OK)
|
||||||
{
|
{
|
||||||
if (ch_mode == MODE_LSP)
|
if (ch_mode == CH_MODE_LSP)
|
||||||
{
|
{
|
||||||
*rettv = *listtv;
|
*rettv = *listtv;
|
||||||
// Change the type to avoid the value being freed.
|
// Change the type to avoid the value being freed.
|
||||||
@ -4674,7 +4676,7 @@ ch_expr_common(typval_T *argvars, typval_T *rettv, int eval)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
free_job_options(&opt);
|
free_job_options(&opt);
|
||||||
if (ch_mode == MODE_LSP && !eval && callback_present)
|
if (ch_mode == CH_MODE_LSP && !eval && callback_present)
|
||||||
{
|
{
|
||||||
// if ch_sendexpr() is used to send a LSP message and a callback
|
// if ch_sendexpr() is used to send a LSP message and a callback
|
||||||
// function is specified, then return the generated identifier for the
|
// function is specified, then return the generated identifier for the
|
||||||
@ -5126,13 +5128,13 @@ channel_part_read(channel_T *channel)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the mode of "channel"/"part"
|
* Return the mode of "channel"/"part"
|
||||||
* If "channel" is invalid returns MODE_JSON.
|
* If "channel" is invalid returns CH_MODE_JSON.
|
||||||
*/
|
*/
|
||||||
static ch_mode_T
|
static ch_mode_T
|
||||||
channel_get_mode(channel_T *channel, ch_part_T part)
|
channel_get_mode(channel_T *channel, ch_part_T part)
|
||||||
{
|
{
|
||||||
if (channel == NULL)
|
if (channel == NULL)
|
||||||
return MODE_JSON;
|
return CH_MODE_JSON;
|
||||||
return channel->ch_part[part].ch_mode;
|
return channel->ch_part[part].ch_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
12
src/job.c
12
src/job.c
@ -24,15 +24,15 @@ handle_mode(typval_T *item, jobopt_T *opt, ch_mode_T *modep, int jo)
|
|||||||
|
|
||||||
opt->jo_set |= jo;
|
opt->jo_set |= jo;
|
||||||
if (STRCMP(val, "nl") == 0)
|
if (STRCMP(val, "nl") == 0)
|
||||||
*modep = MODE_NL;
|
*modep = CH_MODE_NL;
|
||||||
else if (STRCMP(val, "raw") == 0)
|
else if (STRCMP(val, "raw") == 0)
|
||||||
*modep = MODE_RAW;
|
*modep = CH_MODE_RAW;
|
||||||
else if (STRCMP(val, "js") == 0)
|
else if (STRCMP(val, "js") == 0)
|
||||||
*modep = MODE_JS;
|
*modep = CH_MODE_JS;
|
||||||
else if (STRCMP(val, "json") == 0)
|
else if (STRCMP(val, "json") == 0)
|
||||||
*modep = MODE_JSON;
|
*modep = CH_MODE_JSON;
|
||||||
else if (STRCMP(val, "lsp") == 0)
|
else if (STRCMP(val, "lsp") == 0)
|
||||||
*modep = MODE_LSP;
|
*modep = CH_MODE_LSP;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
semsg(_(e_invalid_argument_str), val);
|
semsg(_(e_invalid_argument_str), val);
|
||||||
@ -1307,7 +1307,7 @@ job_start(
|
|||||||
{
|
{
|
||||||
// Default mode is NL.
|
// Default mode is NL.
|
||||||
clear_job_options(&opt);
|
clear_job_options(&opt);
|
||||||
opt.jo_mode = MODE_NL;
|
opt.jo_mode = CH_MODE_NL;
|
||||||
if (get_job_options(&argvars[1], &opt,
|
if (get_job_options(&argvars[1], &opt,
|
||||||
JO_MODE_ALL + JO_CB_ALL + JO_TIMEOUT_ALL + JO_STOPONEXIT
|
JO_MODE_ALL + JO_CB_ALL + JO_TIMEOUT_ALL + JO_STOPONEXIT
|
||||||
+ JO_EXIT_CB + JO_OUT_IO + JO_BLOCK_WRITE,
|
+ JO_EXIT_CB + JO_OUT_IO + JO_BLOCK_WRITE,
|
||||||
|
@ -2198,11 +2198,11 @@ struct cbq_S
|
|||||||
// mode for a channel
|
// mode for a channel
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
MODE_NL = 0,
|
CH_MODE_NL = 0,
|
||||||
MODE_RAW,
|
CH_MODE_RAW,
|
||||||
MODE_JSON,
|
CH_MODE_JSON,
|
||||||
MODE_JS,
|
CH_MODE_JS,
|
||||||
MODE_LSP // Language Server Protocol (http + json)
|
CH_MODE_LSP // Language Server Protocol (http + json)
|
||||||
} ch_mode_T;
|
} ch_mode_T;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -326,7 +326,8 @@ set_term_and_win_size(term_T *term, jobopt_T *opt)
|
|||||||
|
|
||||||
vim_snprintf((char *)buf, 100, "%dx%d",
|
vim_snprintf((char *)buf, 100, "%dx%d",
|
||||||
term->tl_rows, term->tl_cols);
|
term->tl_rows, term->tl_cols);
|
||||||
set_option_value((char_u *)"termwinsize", 0L, buf, OPT_LOCAL);
|
set_option_value_give_err((char_u *)"termwinsize",
|
||||||
|
0L, buf, OPT_LOCAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -340,9 +341,9 @@ init_job_options(jobopt_T *opt)
|
|||||||
{
|
{
|
||||||
clear_job_options(opt);
|
clear_job_options(opt);
|
||||||
|
|
||||||
opt->jo_mode = MODE_RAW;
|
opt->jo_mode = CH_MODE_RAW;
|
||||||
opt->jo_out_mode = MODE_RAW;
|
opt->jo_out_mode = CH_MODE_RAW;
|
||||||
opt->jo_err_mode = MODE_RAW;
|
opt->jo_err_mode = CH_MODE_RAW;
|
||||||
opt->jo_set = JO_MODE | JO_OUT_MODE | JO_ERR_MODE;
|
opt->jo_set = JO_MODE | JO_OUT_MODE | JO_ERR_MODE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -746,6 +746,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 */
|
||||||
|
/**/
|
||||||
|
4909,
|
||||||
/**/
|
/**/
|
||||||
4908,
|
4908,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user