vim-patch:9.0.1633: duplicate code for converting float to string

Problem:    Duplicate code for converting float to string.
Solution:   Use tv_get_string(). (closes vim/vim#12521)

19dfa276c3
This commit is contained in:
zeertzjq 2023-09-17 11:05:36 +08:00
parent ac0fda2e46
commit a1f0f0b2bc

View File

@ -949,8 +949,7 @@ int skip_expr(char **pp, evalarg_T *const evalarg)
/// Convert "tv" to a string.
///
/// @param convert when true convert a List into a sequence of lines and convert
/// a Float to a String.
/// @param convert when true convert a List into a sequence of lines.
///
/// @return an allocated string.
static char *typval2string(typval_T *tv, bool convert)
@ -967,20 +966,14 @@ static char *typval2string(typval_T *tv, bool convert)
ga_append(&ga, NUL);
return (char *)ga.ga_data;
}
if (convert && tv->v_type == VAR_FLOAT) {
char numbuf[NUMBUFLEN];
vim_snprintf(numbuf, NUMBUFLEN, "%g", tv->vval.v_float);
return xstrdup(numbuf);
}
return xstrdup(tv_get_string(tv));
}
/// Top level evaluation function, returning a string.
///
/// @param convert when true convert a List into a sequence of lines and convert
/// a Float to a String.
/// @param convert when true convert a List into a sequence of lines.
///
/// @return pointer to allocated memory, or NULL for failure.
/// @return pointer to allocated memory, or NULL for failure.
char *eval_to_string(char *arg, bool convert)
{
typval_T tv;