From c3efb2804a6bcf3b61695cd2b0c60bb16f1ec0a9 Mon Sep 17 00:00:00 2001 From: James McCoy Date: Wed, 16 Nov 2016 14:30:20 -0500 Subject: vim-patch:7.4.2029 Problem: printf() does not work with 64 bit numbers. Solution: use the "L" length modifier. (Ken Takata) https://github.com/vim/vim/commit/38ee6b041e73ad31c3b6b99d56d20833b59b2b57 --- src/nvim/strings.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/nvim/strings.c') diff --git a/src/nvim/strings.c b/src/nvim/strings.c index c5fd8741b8..9b9aa6d2f4 100644 --- a/src/nvim/strings.c +++ b/src/nvim/strings.c @@ -910,6 +910,13 @@ int vim_vsnprintf(char *str, size_t str_m, const char *fmt, va_list ap, default: break; } + switch (fmt_spec) { + case 'd': case 'u': case 'o': case 'x': case 'X': + if (tvs && length_modifier == '\0') { + length_modifier = '2'; + } + } + // get parameter value, do initial processing switch (fmt_spec) { // '%' and 'c' behave similar to 's' regarding flags and field widths -- cgit From 601bf9642fe8f3655a3090d093843ae136110f27 Mon Sep 17 00:00:00 2001 From: James McCoy Date: Tue, 6 Jun 2017 09:56:09 -0400 Subject: strings/tv_float: Explicitly cast v_number to float_T for -Wconversion --- src/nvim/strings.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/nvim/strings.c') diff --git a/src/nvim/strings.c b/src/nvim/strings.c index 9b9aa6d2f4..687f734742 100644 --- a/src/nvim/strings.c +++ b/src/nvim/strings.c @@ -653,7 +653,7 @@ static float_T tv_float(typval_T *const tvs, int *const idxp) if (tvs[idx].v_type == VAR_FLOAT) { f = tvs[idx].vval.v_float; } else if (tvs[idx].v_type == VAR_NUMBER) { - f = tvs[idx].vval.v_number; + f = (float_T)tvs[idx].vval.v_number; } else { EMSG(_("E807: Expected Float argument for printf()")); } -- cgit