Problem: Not always using GA_CONCAT_LITERAL with string literals.
(after: v9.2.0031)
Solution: Use the GA_CONCAT_LITERAL, instead of ga_concat_len.
(John Marriott)
closes: #19468
Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
// Store bytes in the growarray.
ga_init2(&ga, 1, 4000);
- ga_concat_len(&ga, (char_u *)"0z", 2);
+ GA_CONCAT_LITERAL(&ga, "0z");
for (i = 0; i < blob_len(blob); i++)
{
size_t numbuflen;
if (i > 0 && (i & 3) == 0)
- ga_concat_len(&ga, (char_u *)".", 1);
+ GA_CONCAT_LITERAL(&ga, ".");
numbuflen = vim_snprintf_safelen((char *)numbuf, NUMBUFLEN,
"%02X", blob_get(blob, i));
ga_concat_len(&ga, numbuf, numbuflen);
if (!is_single_line)
{
if (exacttext)
- ga_concat_len(&ga, (char_u *)"\\n", 2);
+ GA_CONCAT_LITERAL(&ga, "\\n");
else
ga_append(&ga, '\n');
}
return FAIL;
ga_concat_len(&ga, line, linelen);
if (exacttext)
- ga_concat_len(&ga, (char_u *)"\\n", 2);
+ GA_CONCAT_LITERAL(&ga, "\\n");
else
ga_append(&ga, '\n');
}
if (first)
first = FALSE;
else
- ga_concat_len(&ga, (char_u *)", ", 2);
+ GA_CONCAT_LITERAL(&ga, ", ");
tofree = string_quote(hi->hi_key, FALSE);
if (tofree != NULL)
ga_concat(&ga, tofree);
vim_free(tofree);
}
- ga_concat_len(&ga, (char_u *)": ", 2);
+ GA_CONCAT_LITERAL(&ga, ": ");
s = echo_string_core(&HI2DI(hi)->di_tv, &tofree, numbuf, copyID,
FALSE, restore_copyID, TRUE);
if (s != NULL)
fname = string_quote(pt == NULL ? NULL : partial_name(pt), FALSE);
ga_init2(&ga, 1, 100);
- ga_concat_len(&ga, (char_u *)"function(", 9);
+ GA_CONCAT_LITERAL(&ga, "function(");
if (fname != NULL)
{
// When using uf_name prepend "g:" for a global function.
if (pt != NULL && pt->pt_name == NULL && fname[0] == '\''
&& vim_isupper(fname[1]))
{
- ga_concat_len(&ga, (char_u *)"'g:", 3);
+ GA_CONCAT_LITERAL(&ga, "'g:");
ga_concat(&ga, fname + 1);
}
else
}
if (pt != NULL && pt->pt_argc > 0)
{
- ga_concat_len(&ga, (char_u *)", [", 3);
+ GA_CONCAT_LITERAL(&ga, ", [");
for (i = 0; i < pt->pt_argc; ++i)
{
if (i > 0)
- ga_concat_len(&ga, (char_u *)", ", 2);
+ GA_CONCAT_LITERAL(&ga, ", ");
ga_concat(&ga, tv2string(&pt->pt_argv[i], &tf, numbuf, copyID));
vim_free(tf);
}
- ga_concat_len(&ga, (char_u *)"]", 1);
+ GA_CONCAT_LITERAL(&ga, "]");
}
if (pt != NULL && pt->pt_dict != NULL)
{
typval_T dtv;
- ga_concat_len(&ga, (char_u *)", ", 2);
+ GA_CONCAT_LITERAL(&ga, ", ");
dtv.v_type = VAR_DICT;
dtv.vval.v_dict = pt->pt_dict;
ga_concat(&ga, tv2string(&dtv, &tf, numbuf, copyID));
vim_free(tf);
}
// terminate with ')' and a NUL
- ga_concat_len(&ga, (char_u *)")", 2);
+ GA_CONCAT_LITERAL(&ga, ")");
+ ga_append(&ga, NUL);
*tofree = ga.ga_data;
r = *tofree;
}
else if (c1 == K_SNR)
{
- ga_concat_len(&line_ga, (char_u *)"<SNR>", 5);
+ GA_CONCAT_LITERAL(&line_ga, "<SNR>");
}
else
{
ga_init2(&ga, 1, 100);
if (type == FRD_REPLACEALL)
- ga_concat_len(&ga, (char_u *)"%s/", 3);
+ GA_CONCAT_LITERAL(&ga, "%s/");
- ga_concat_len(&ga, (char_u *)"\\V", 2);
+ GA_CONCAT_LITERAL(&ga, "\\V");
if (flags & FRD_MATCH_CASE)
- ga_concat_len(&ga, (char_u *)"\\C", 2);
+ GA_CONCAT_LITERAL(&ga, "\\C");
else
- ga_concat_len(&ga, (char_u *)"\\c", 2);
+ GA_CONCAT_LITERAL(&ga, "\\c");
if (flags & FRD_WHOLE_WORD)
- ga_concat_len(&ga, (char_u *)"\\<", 2);
+ GA_CONCAT_LITERAL(&ga, "\\<");
// escape slash and backslash
p = vim_strsave_escaped(find_text, (char_u *)"/\\");
if (p != NULL)
ga_concat(&ga, p);
vim_free(p);
if (flags & FRD_WHOLE_WORD)
- ga_concat_len(&ga, (char_u *)"\\>", 2);
+ GA_CONCAT_LITERAL(&ga, "\\>");
if (type == FRD_REPLACEALL)
{
- ga_concat_len(&ga, (char_u *)"/", 1);
+ GA_CONCAT_LITERAL(&ga, "/");
// Escape slash and backslash.
// Also escape tilde and ampersand if 'magic' is set.
p = vim_strsave_escaped(repl_text,
if (p != NULL)
ga_concat(&ga, p);
vim_free(p);
- ga_concat_len(&ga, (char_u *)"/g", 2);
+ GA_CONCAT_LITERAL(&ga, "/g");
}
ga_append(&ga, NUL);
if (WindowValid(dpy, (Window)w))
{
ga_concat(&ga, p + 1);
- ga_concat_len(&ga, (char_u *)"\n", 1);
+ GA_CONCAT_LITERAL(&ga, "\n");
}
while (*p != 0)
p++;
ga_concat(&reply,
(char_u *)_(e_invalid_expression_received));
ga_append(&reply, 0);
- ga_concat_len(&reply, (char_u *)"-c 1", 4);
+ GA_CONCAT_LITERAL(&reply, "-c 1");
}
ga_append(&reply, NUL);
(void)AppendPropCarefully(dpy, resWindow, commProperty,
for (i = 0; i < argc; ++i)
{
if (i > 0)
- ga_concat_len(&ga, (char_u *)" ", 2);
+ GA_CONCAT_LITERAL(&ga, " ");
ga_concat(&ga, (char_u *)argv[i]);
}
ga_append(&ga, NUL);
// Add the name to the list
ga_concat(ga, (char_u *)server);
- ga_concat_len(ga, (char_u *)"\n", 1);
+ GA_CONCAT_LITERAL(ga, "\n");
return TRUE;
}
// grow indent for state->out
indent->ga_len -= 1;
if (state->out1)
- ga_concat_len(indent, (char_u *)"| ", 2);
+ GA_CONCAT_LITERAL(indent, "| ");
else
- ga_concat_len(indent, (char_u *)" ", 2);
+ GA_CONCAT_LITERAL(indent, " ");
ga_append(indent, NUL);
nfa_print_state2(debugf, state->out, indent);
// replace last part of indent for state->out1
indent->ga_len -= 3;
- ga_concat_len(indent, (char_u *)" ", 2);
+ GA_CONCAT_LITERAL(indent, " ");
ga_append(indent, NUL);
nfa_print_state2(debugf, state->out1, indent);
ga.ga_len += (int)added;
}
if (idx != exestack.ga_len - 1)
- ga_concat_len(&ga, (char_u *)"..", 2);
+ GA_CONCAT_LITERAL(&ga, "..");
}
}
ga_concat(&ga, p + 1);
else if (*p == '|')
{
- ga_concat_len(&ga, (char_u *)" ", 1);
+ GA_CONCAT_LITERAL(&ga, " ");
ga_concat(&ga, p);
}
for (;;)
ga_concat(&ga, p + 1);
else
{
- ga_concat_len(&ga, (char_u *)" ", 1);
+ GA_CONCAT_LITERAL(&ga, " ");
ga_concat(&ga, p);
}
}
static void
dump_is_corrupt(garray_T *gap)
{
- ga_concat_len(gap, (char_u *)"CORRUPT", 7);
+ GA_CONCAT_LITERAL(gap, "CORRUPT");
}
static void
// For a :def function "python << EOF" concatenates all the lines,
// to be used for the instruction later.
ga_concat(&heredoc_ga, theline);
- ga_concat_len(&heredoc_ga, (char_u *)"\n", 1);
+ GA_CONCAT_LITERAL(&heredoc_ga, "\n");
p = vim_strnsave((char_u *)"", 0);
}
else
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 41,
/**/
40,
/**/
int is_enum = IS_ENUM(cl);
ga_init2(&fga, 1, 1000);
- ga_concat_len(&fga, (char_u *)"new(", 4);
+ GA_CONCAT_LITERAL(&fga, "new(");
for (int i = 0; i < cl->class_obj_member_count; ++i)
{
if (i < 2 && is_enum)
continue;
if (i > (is_enum ? 2 : 0))
- ga_concat_len(&fga, (char_u *)", ", 2);
- ga_concat_len(&fga, (char_u *)"this.", 5);
+ GA_CONCAT_LITERAL(&fga, ", ");
+ GA_CONCAT_LITERAL(&fga, "this.");
ocmember_T *m = cl->class_obj_members + i;
ga_concat_len(&fga, (char_u *)m->ocm_name.string, m->ocm_name.length);
- ga_concat_len(&fga, (char_u *)" = v:none", 9);
+ GA_CONCAT_LITERAL(&fga, " = v:none");
}
- ga_concat_len(&fga, (char_u *)")\nenddef\n", 9); // Note: not 11!
+ GA_CONCAT_LITERAL(&fga, ")\nenddef\n");
ga_append(&fga, NUL);
exarg_T fea;
int rc = FAIL;
ga_init2(&fga, 1, 1000);
- ga_concat_len(&fga, (char_u *)"[", 1);
+ GA_CONCAT_LITERAL(&fga, "[");
for (int i = 0; i < num_enum_values; ++i)
{
ocmember_T *m = ((ocmember_T *)gap->ga_data) + i;
if (i > 0)
- ga_concat_len(&fga, (char_u *)", ", 2);
+ GA_CONCAT_LITERAL(&fga, ", ");
ga_concat_len(&fga, en->class_name.string, en->class_name.length);
- ga_concat_len(&fga, (char_u *)".", 1);
+ GA_CONCAT_LITERAL(&fga, ".");
ga_concat_len(&fga, (char_u *)m->ocm_name.string, m->ocm_name.length);
}
- ga_concat_len(&fga, (char_u *)"]", 1);
+ GA_CONCAT_LITERAL(&fga, "]");
ga_append(&fga, NUL);
char_u *varname = (char_u *)"values";
if (cl != NULL && IS_ENUM(cl))
{
- ga_concat_len(&ga, (char_u *)"enum ", 5);
+ GA_CONCAT_LITERAL(&ga, "enum ");
ga_concat_len(&ga, cl->class_name.string, cl->class_name.length);
char_u *enum_name = ((typval_T *)(obj + 1))->vval.v_string;
- ga_concat_len(&ga, (char_u *)".", 1);
+ GA_CONCAT_LITERAL(&ga, ".");
ga_concat(&ga, enum_name);
}
else
{
- ga_concat_len(&ga, (char_u *)"object of ", 10);
+ GA_CONCAT_LITERAL(&ga, "object of ");
if (cl == NULL)
- ga_concat_len(&ga, (char_u *)"[unknown]", 9);
+ GA_CONCAT_LITERAL(&ga, "[unknown]");
else
ga_concat_len(&ga, cl->class_name.string, cl->class_name.length);
}
if (cl != NULL)
{
- ga_concat_len(&ga, (char_u *)" {", 2);
+ GA_CONCAT_LITERAL(&ga, " {");
for (int i = 0; i < cl->class_obj_member_count; ++i)
{
if (i > 0)
- ga_concat_len(&ga, (char_u *)", ", 2);
+ GA_CONCAT_LITERAL(&ga, ", ");
ocmember_T *m = &cl->class_obj_members[i];
ga_concat_len(&ga, m->ocm_name.string, m->ocm_name.length);
- ga_concat_len(&ga, (char_u *)": ", 2);
+ GA_CONCAT_LITERAL(&ga, ": ");
char_u *tf = NULL;
char_u *s = echo_string_core((typval_T *)(obj + 1) + i,
&tf, numbuf, copyID, echo_style,
}
line_breakcheck();
}
- ga_concat_len(&ga, (char_u *)"}", 1);
+ GA_CONCAT_LITERAL(&ga, "}");
}
if (ok == FAIL)
{
if (p != NULL)
{
ga_concat(&ga, p);
- ga_concat_len(&ga, (char_u *)" ", 1);
+ GA_CONCAT_LITERAL(&ga, " ");
vim_free(p);
}
s = e + 1;
if (type->tt_argcount <= 0)
// empty tuple
- ga_concat_len(&ga, (char_u *)"any", 3);
+ GA_CONCAT_LITERAL(&ga, "any");
else
{
if (type->tt_args == NULL)
- ga_concat_len(&ga, (char_u *)"[unknown]", 9);
+ GA_CONCAT_LITERAL(&ga, "[unknown]");
else
{
for (i = 0; i < type->tt_argcount; ++i)
if (ga_grow(&ga, (int)arg_type.length + 8) == FAIL)
goto failed;
if (varargs && i == type->tt_argcount - 1)
- ga_concat_len(&ga, (char_u *)"...", 3);
+ GA_CONCAT_LITERAL(&ga, "...");
ga_concat_len(&ga, arg_type.string, arg_type.length);
VIM_CLEAR(arg_free);
}
if (ga_grow(&ga, (int)arg_type.length + 8) == FAIL)
goto failed;
if (varargs && i == type->tt_argcount - 1)
- ga_concat_len(&ga, (char_u *)"...", 3);
+ GA_CONCAT_LITERAL(&ga, "...");
else if (i >= type->tt_min_argcount)
*((char *)ga.ga_data + ga.ga_len++) = '?';
ga_concat_len(&ga, arg_type.string, arg_type.length);
}
if (type->tt_argcount < 0)
// any number of arguments
- ga_concat_len(&ga, (char_u *)"...", 3);
+ GA_CONCAT_LITERAL(&ga, "...");
if (type->tt_member == &t_void)
STRCPY((char *)ga.ga_data + ga.ga_len, ")");