From 414ef75ee644663c16075eba062554b73d532edc Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 2 Apr 2018 11:12:05 +0300 Subject: buffer: Beautify code a bit --- src/nvim/buffer.c | 51 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 21 deletions(-) (limited to 'src/nvim/buffer.c') diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index 0cd6f628b5..11c3b75d70 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -22,6 +22,7 @@ #include #include #include +#include #include "nvim/api/private/handle.h" #include "nvim/api/private/helpers.h" @@ -2913,7 +2914,6 @@ void maketitle(void) } } - t_str = buf; if (*p_titlestring != NUL) { if (stl_syntax & STL_IN_TITLE) { int use_sandbox = FALSE; @@ -2921,43 +2921,48 @@ void maketitle(void) use_sandbox = was_set_insecurely((char_u *)"titlestring", 0); called_emsg = FALSE; - build_stl_str_hl(curwin, t_str, sizeof(buf), + build_stl_str_hl(curwin, buf, sizeof(buf), p_titlestring, use_sandbox, 0, maxlen, NULL, NULL); - if (called_emsg) - set_string_option_direct((char_u *)"titlestring", -1, - (char_u *)"", OPT_FREE, SID_ERROR); + t_str = buf; + if (called_emsg) { + set_string_option_direct((char_u *)"titlestring", -1, (char_u *)"", + OPT_FREE, SID_ERROR); + } called_emsg |= save_called_emsg; - } else + } else { t_str = p_titlestring; + } } else { /* format: "fname + (path) (1 of 2) - VIM" */ -#define SPACE_FOR_FNAME (IOSIZE - 100) -#define SPACE_FOR_DIR (IOSIZE - 20) -#define SPACE_FOR_ARGNR (IOSIZE - 10) /* at least room for " - VIM" */ - if (curbuf->b_fname == NULL) +#define SPACE_FOR_FNAME (sizeof(buf) - 100) +#define SPACE_FOR_DIR (sizeof(buf) - 20) +#define SPACE_FOR_ARGNR (sizeof(buf) - 10) // At least room for " - VIM" + if (curbuf->b_fname == NULL) { STRLCPY(buf, _("[No Name]"), SPACE_FOR_FNAME + 1); - else { + } else { p = transstr(path_tail(curbuf->b_fname)); STRLCPY(buf, p, SPACE_FOR_FNAME + 1); xfree(p); } switch (bufIsChanged(curbuf) - + (curbuf->b_p_ro * 2) - + (!MODIFIABLE(curbuf) * 4)) { - case 1: STRCAT(buf, " +"); break; - case 2: STRCAT(buf, " ="); break; - case 3: STRCAT(buf, " =+"); break; - case 4: - case 6: STRCAT(buf, " -"); break; - case 5: - case 7: STRCAT(buf, " -+"); break; + | (curbuf->b_p_ro << 1) + | (!MODIFIABLE(curbuf) << 2)) { + case 0: break; + case 1: STRCAT(buf, " +"); break; + case 2: STRCAT(buf, " ="); break; + case 3: STRCAT(buf, " =+"); break; + case 4: + case 6: STRCAT(buf, " -"); break; + case 5: + case 7: STRCAT(buf, " -+"); break; + default: assert(false); } if (curbuf->b_fname != NULL) { - /* Get path of file, replace home dir with ~ */ + // Get path of file, replace home dir with ~. off = (int)STRLEN(buf); buf[off++] = ' '; buf[off++] = '('; @@ -2998,6 +3003,10 @@ void maketitle(void) if (vim_strsize(buf) > maxlen) trunc_string(buf, buf, maxlen, IOSIZE); } + t_str = buf; +#undef SPACE_FOR_FNAME +#undef SPACE_FOR_DIR +#undef SPACE_FOR_ARGNR } } mustset = ti_change(t_str, &lasttitle); -- cgit From 0d7daaad98d5874b345453073f6e21b024ee42d4 Mon Sep 17 00:00:00 2001 From: ZyX Date: Sun, 8 Apr 2018 16:01:19 +0300 Subject: charset,*: Refactor transstr() --- src/nvim/buffer.c | 77 +++++++++++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 39 deletions(-) (limited to 'src/nvim/buffer.c') diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index 11c3b75d70..02d4cd30d4 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -2886,15 +2886,13 @@ static char_u *lasticon = NULL; void maketitle(void) { - char_u *p; char_u *t_str = NULL; char_u *i_name; char_u *i_str = NULL; int maxlen = 0; int len; int mustset; - char_u buf[IOSIZE]; - int off; + char buf[IOSIZE]; if (!redrawing()) { /* Postpone updating the title when 'lazyredraw' is set. */ @@ -2921,10 +2919,10 @@ void maketitle(void) use_sandbox = was_set_insecurely((char_u *)"titlestring", 0); called_emsg = FALSE; - build_stl_str_hl(curwin, buf, sizeof(buf), - p_titlestring, use_sandbox, - 0, maxlen, NULL, NULL); - t_str = buf; + build_stl_str_hl(curwin, (char_u *)buf, sizeof(buf), + p_titlestring, use_sandbox, + 0, maxlen, NULL, NULL); + t_str = (char_u *)buf; if (called_emsg) { set_string_option_direct((char_u *)"titlestring", -1, (char_u *)"", OPT_FREE, SID_ERROR); @@ -2934,76 +2932,77 @@ void maketitle(void) t_str = p_titlestring; } } else { - /* format: "fname + (path) (1 of 2) - VIM" */ + // Format: "fname + (path) (1 of 2) - VIM". #define SPACE_FOR_FNAME (sizeof(buf) - 100) #define SPACE_FOR_DIR (sizeof(buf) - 20) -#define SPACE_FOR_ARGNR (sizeof(buf) - 10) // At least room for " - VIM" +#define SPACE_FOR_ARGNR (sizeof(buf) - 10) // At least room for " - VIM". if (curbuf->b_fname == NULL) { - STRLCPY(buf, _("[No Name]"), SPACE_FOR_FNAME + 1); + xstrlcpy(buf, _("[No Name]"), SPACE_FOR_FNAME + 1); } else { - p = transstr(path_tail(curbuf->b_fname)); - STRLCPY(buf, p, SPACE_FOR_FNAME + 1); - xfree(p); + transstr_buf((const char *)path_tail(curbuf->b_fname), + buf, SPACE_FOR_FNAME + 1); } switch (bufIsChanged(curbuf) | (curbuf->b_p_ro << 1) | (!MODIFIABLE(curbuf) << 2)) { case 0: break; - case 1: STRCAT(buf, " +"); break; - case 2: STRCAT(buf, " ="); break; - case 3: STRCAT(buf, " =+"); break; + case 1: strcat(buf, " +"); break; + case 2: strcat(buf, " ="); break; + case 3: strcat(buf, " =+"); break; case 4: - case 6: STRCAT(buf, " -"); break; + case 6: strcat(buf, " -"); break; case 5: - case 7: STRCAT(buf, " -+"); break; + case 7: strcat(buf, " -+"); break; default: assert(false); } if (curbuf->b_fname != NULL) { // Get path of file, replace home dir with ~. - off = (int)STRLEN(buf); + size_t off = strlen(buf); buf[off++] = ' '; buf[off++] = '('; home_replace(curbuf, curbuf->b_ffname, - buf + off, (size_t)(SPACE_FOR_DIR - off), true); + (char_u *)buf + off, (size_t)(SPACE_FOR_DIR - off), true); #ifdef BACKSLASH_IN_FILENAME /* avoid "c:/name" to be reduced to "c" */ if (isalpha(buf[off]) && buf[off + 1] == ':') off += 2; #endif - /* remove the file name */ - p = path_tail_with_sep(buf + off); - if (p == buf + off) - /* must be a help buffer */ - STRLCPY(buf + off, _("help"), SPACE_FOR_DIR - off); - else + // Remove the file name. + char *p = (char *)path_tail_with_sep((char_u *)buf + off); + if (p == buf + off) { + // Must be a help buffer. + xstrlcpy(buf + off, _("help"), SPACE_FOR_DIR - off); + } else { *p = NUL; + } - /* Translate unprintable chars and concatenate. Keep some - * room for the server name. When there is no room (very long - * file name) use (...). */ + // Translate unprintable chars and concatenate. Keep some + // room for the server name. When there is no room (very long + // file name) use (...). if (off < SPACE_FOR_DIR) { p = transstr(buf + off); - STRLCPY(buf + off, p, SPACE_FOR_DIR - off + 1); + xstrlcpy(buf + off, p, SPACE_FOR_DIR - off + 1); xfree(p); } else { - STRLCPY(buf + off, "...", SPACE_FOR_ARGNR - off + 1); + xstrlcpy(buf + off, "...", SPACE_FOR_ARGNR - off + 1); } - STRCAT(buf, ")"); + strcat(buf, ")"); } - append_arg_number(curwin, buf, SPACE_FOR_ARGNR, FALSE); + append_arg_number(curwin, (char_u *)buf, SPACE_FOR_ARGNR, false); - STRCAT(buf, " - NVIM"); + strcat(buf, " - NVIM"); if (maxlen > 0) { - /* make it shorter by removing a bit in the middle */ - if (vim_strsize(buf) > maxlen) - trunc_string(buf, buf, maxlen, IOSIZE); + // Make it shorter by removing a bit in the middle. + if (vim_strsize((char_u *)buf) > maxlen) { + trunc_string((char_u *)buf, (char_u *)buf, maxlen, sizeof(buf)); + } } - t_str = buf; + t_str = (char_u *)buf; #undef SPACE_FOR_FNAME #undef SPACE_FOR_DIR #undef SPACE_FOR_ARGNR @@ -3012,7 +3011,7 @@ void maketitle(void) mustset = ti_change(t_str, &lasttitle); if (p_icon) { - i_str = buf; + i_str = (char_u *)buf; if (*p_iconstring != NUL) { if (stl_syntax & STL_IN_ICON) { int use_sandbox = FALSE; -- cgit From 58a5699a4400d1d706056e456ca641b3e4b0a5e9 Mon Sep 17 00:00:00 2001 From: ZyX Date: Sun, 8 Apr 2018 19:21:44 +0300 Subject: buffer: PVS/V557: Refactor maketitle() --- src/nvim/buffer.c | 67 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 28 deletions(-) (limited to 'src/nvim/buffer.c') diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index 02d4cd30d4..e7ecdb6c19 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -2936,45 +2936,48 @@ void maketitle(void) #define SPACE_FOR_FNAME (sizeof(buf) - 100) #define SPACE_FOR_DIR (sizeof(buf) - 20) -#define SPACE_FOR_ARGNR (sizeof(buf) - 10) // At least room for " - VIM". +#define SPACE_FOR_ARGNR (sizeof(buf) - 10) // At least room for " - NVIM". + char *buf_p = buf; if (curbuf->b_fname == NULL) { - xstrlcpy(buf, _("[No Name]"), SPACE_FOR_FNAME + 1); + const size_t size = xstrlcpy(buf_p, _("[No Name]"), + SPACE_FOR_FNAME + 1); + buf_p += MIN(size, SPACE_FOR_FNAME); } else { - transstr_buf((const char *)path_tail(curbuf->b_fname), - buf, SPACE_FOR_FNAME + 1); + buf_p += transstr_buf((const char *)path_tail(curbuf->b_fname), + buf_p, SPACE_FOR_FNAME + 1); } switch (bufIsChanged(curbuf) | (curbuf->b_p_ro << 1) | (!MODIFIABLE(curbuf) << 2)) { case 0: break; - case 1: strcat(buf, " +"); break; - case 2: strcat(buf, " ="); break; - case 3: strcat(buf, " =+"); break; + case 1: buf_p = strappend(buf_p, " +"); break; + case 2: buf_p = strappend(buf_p, " ="); break; + case 3: buf_p = strappend(buf_p, " =+"); break; case 4: - case 6: strcat(buf, " -"); break; + case 6: buf_p = strappend(buf_p, " -"); break; case 5: - case 7: strcat(buf, " -+"); break; + case 7: buf_p = strappend(buf_p, " -+"); break; default: assert(false); } if (curbuf->b_fname != NULL) { // Get path of file, replace home dir with ~. - size_t off = strlen(buf); - buf[off++] = ' '; - buf[off++] = '('; - home_replace(curbuf, curbuf->b_ffname, - (char_u *)buf + off, (size_t)(SPACE_FOR_DIR - off), true); + *buf_p++ = ' '; + *buf_p++ = '('; + home_replace(curbuf, curbuf->b_ffname, (char_u *)buf_p, + (SPACE_FOR_DIR - (size_t)(buf_p - buf)), true); #ifdef BACKSLASH_IN_FILENAME - /* avoid "c:/name" to be reduced to "c" */ - if (isalpha(buf[off]) && buf[off + 1] == ':') - off += 2; + // Avoid "c:/name" to be reduced to "c". + if (isalpha((uint8_t)buf_p) && *(buf_p + 1) == ':') { + buf_p += 2; + } #endif // Remove the file name. - char *p = (char *)path_tail_with_sep((char_u *)buf + off); - if (p == buf + off) { + char *p = (char *)path_tail_with_sep((char_u *)buf_p); + if (p == buf_p) { // Must be a help buffer. - xstrlcpy(buf + off, _("help"), SPACE_FOR_DIR - off); + xstrlcpy(buf_p, _("help"), SPACE_FOR_DIR - (size_t)(buf_p - buf)); } else { *p = NUL; } @@ -2982,19 +2985,27 @@ void maketitle(void) // Translate unprintable chars and concatenate. Keep some // room for the server name. When there is no room (very long // file name) use (...). - if (off < SPACE_FOR_DIR) { - p = transstr(buf + off); - xstrlcpy(buf + off, p, SPACE_FOR_DIR - off + 1); - xfree(p); + if ((size_t)(buf_p - buf) < SPACE_FOR_DIR) { + char *const tbuf = transstr(buf_p); + const size_t free_space = SPACE_FOR_DIR - (size_t)(buf_p - buf) + 1; + const size_t dir_len = xstrlcpy(buf_p, tbuf, free_space); + buf_p += MIN(dir_len, free_space - 1); + xfree(tbuf); } else { - xstrlcpy(buf + off, "...", SPACE_FOR_ARGNR - off + 1); + const size_t free_space = SPACE_FOR_ARGNR - (size_t)(buf_p - buf) + 1; + const size_t dots_len = xstrlcpy(buf_p, "...", free_space); + buf_p += MIN(dots_len, free_space - 1); } - strcat(buf, ")"); + *buf_p++ = ')'; + *buf_p = NUL; + } else { + *buf_p = NUL; } - append_arg_number(curwin, (char_u *)buf, SPACE_FOR_ARGNR, false); + append_arg_number(curwin, (char_u *)buf_p, + (int)(SPACE_FOR_ARGNR - (size_t)(buf_p - buf)), false); - strcat(buf, " - NVIM"); + strcat(buf_p, " - NVIM"); if (maxlen > 0) { // Make it shorter by removing a bit in the middle. -- cgit From 840027c7f5720ab7c09b7b9a8aa4f3cc0c8cf777 Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 9 Apr 2018 09:56:39 +0300 Subject: buffer: Fix PVS/V547: base is never set to octal --- src/nvim/buffer.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src/nvim/buffer.c') diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index e7ecdb6c19..1a5b7ec612 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -3110,7 +3110,6 @@ void free_titles(void) /// be used when printing numbers in the status line. typedef enum { kNumBaseDecimal = 10, - kNumBaseOctal = 8, kNumBaseHexadecimal = 16 } NumberBase; @@ -3908,9 +3907,7 @@ int build_stl_str_hl( // Note: The `*` means we take the width as one of the arguments *t++ = '*'; - *t++ = (char_u) (base == kNumBaseHexadecimal ? 'X' - : (base == kNumBaseOctal ? 'o' - : 'd')); + *t++ = (char_u)(base == kNumBaseHexadecimal ? 'X' : 'd'); *t = 0; // } -- cgit From 92759ef34fabe8ffb81f32bdda17f999f868082d Mon Sep 17 00:00:00 2001 From: ZyX Date: Mon, 9 Apr 2018 10:02:54 +0300 Subject: buffer: Fix PVS/V560: condition was checked three lines above --- src/nvim/buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/nvim/buffer.c') diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index 1a5b7ec612..a4ba30337d 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -5362,7 +5362,7 @@ void bufhl_clear_line_range(buf_T *buf, if (line > line_end) { break; } - if (line_start <= line && line <= line_end) { + if (line_start <= line) { BufhlLineStatus status = bufhl_clear_line(l, src_id, line); if (status != kBLSUnchanged) { if (line > last_changed) { -- cgit From 4bab9d34e6ec8801d36e2c8594d2122fc45e8db2 Mon Sep 17 00:00:00 2001 From: ZyX Date: Sun, 22 Apr 2018 20:31:40 +0300 Subject: *: Fix clint errors --- src/nvim/buffer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/nvim/buffer.c') diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index a4ba30337d..ba63822837 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -2918,7 +2918,7 @@ void maketitle(void) int save_called_emsg = called_emsg; use_sandbox = was_set_insecurely((char_u *)"titlestring", 0); - called_emsg = FALSE; + called_emsg = false; build_stl_str_hl(curwin, (char_u *)buf, sizeof(buf), p_titlestring, use_sandbox, 0, maxlen, NULL, NULL); @@ -3005,7 +3005,7 @@ void maketitle(void) append_arg_number(curwin, (char_u *)buf_p, (int)(SPACE_FOR_ARGNR - (size_t)(buf_p - buf)), false); - strcat(buf_p, " - NVIM"); + xstrlcat(buf_p, " - NVIM", (sizeof(buf) - (size_t)(buf_p - buf))); if (maxlen > 0) { // Make it shorter by removing a bit in the middle. -- cgit