aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2015-01-10 09:33:27 -0500
committerJustin M. Keyes <justinkz@gmail.com>2015-01-10 09:33:27 -0500
commitf2460e93be3e047c1350a970e5963aadc90f2697 (patch)
tree5e861e5fbdac77afaab50ea7da9982479d26102e /src
parent515acf72247518ed34c5f76ce6fe007217cd94bb (diff)
parent85904c992e3b8bd142bdedbb3b85cd17be67b39a (diff)
downloadrneovim-f2460e93be3e047c1350a970e5963aadc90f2697.tar.gz
rneovim-f2460e93be3e047c1350a970e5963aadc90f2697.tar.bz2
rneovim-f2460e93be3e047c1350a970e5963aadc90f2697.zip
Merge pull request #1788 from elmart/remove-long_u-4
Remove project-specific integer types: long_u. (4)
Diffstat (limited to 'src')
-rw-r--r--src/nvim/CMakeLists.txt2
-rw-r--r--src/nvim/eval.c2
-rw-r--r--src/nvim/hardcopy.c195
-rw-r--r--src/nvim/hardcopy.h6
-rw-r--r--src/nvim/keymap.c6
-rw-r--r--src/nvim/option.c7
-rw-r--r--src/nvim/os/input.c7
-rw-r--r--src/nvim/syntax.c2
-rw-r--r--src/nvim/term.c247
9 files changed, 232 insertions, 242 deletions
diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt
index 2abac06574..5fe52e3323 100644
--- a/src/nvim/CMakeLists.txt
+++ b/src/nvim/CMakeLists.txt
@@ -59,7 +59,6 @@ set(CONV_SOURCES
fileio.c
fold.c
getchar.c
- hardcopy.c
if_cscope.c
indent.c
keymap.c
@@ -84,7 +83,6 @@ set(CONV_SOURCES
spell.c
syntax.c
tag.c
- term.c
ui.c
version.c
window.c)
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 9932b243f7..d3ce7b46a7 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -4498,7 +4498,7 @@ static int get_string_tv(char_u **arg, typval_T *rettv, int evaluate)
{
char_u *p;
char_u *name;
- int extra = 0;
+ unsigned int extra = 0;
/*
* Find the end of the string, skipping backslashed characters.
diff --git a/src/nvim/hardcopy.c b/src/nvim/hardcopy.c
index f1f619066a..d072277d38 100644
--- a/src/nvim/hardcopy.c
+++ b/src/nvim/hardcopy.c
@@ -10,6 +10,7 @@
* hardcopy.c: printing to paper
*/
+#include <assert.h>
#include <errno.h>
#include <string.h>
#include <inttypes.h>
@@ -82,11 +83,11 @@
* void mch_print_set_font(int Bold, int Italic, int Underline);
* Called whenever the font style changes.
*
- * void mch_print_set_bg(long_u bgcol);
+ * void mch_print_set_bg(uint32_t bgcol);
* Called to set the background color for the following text. Parameter is an
* RGB value.
*
- * void mch_print_set_fg(long_u fgcol);
+ * void mch_print_set_fg(uint32_t fgcol);
* Called to set the foreground color for the following text. Parameter is an
* RGB value.
*
@@ -124,30 +125,28 @@ static option_table_T printer_opts[OPT_PRINT_NUM_OPTIONS]
;
-static const long_u cterm_color_8[8] =
-{
- (long_u)0x000000L, (long_u)0xff0000L, (long_u)0x00ff00L, (long_u)0xffff00L,
- (long_u)0x0000ffL, (long_u)0xff00ffL, (long_u)0x00ffffL, (long_u)0xffffffL
+static const uint32_t cterm_color_8[8] = {
+ 0x000000, 0xff0000, 0x00ff00, 0xffff00,
+ 0x0000ff, 0xff00ff, 0x00ffff, 0xffffff
};
-static const long_u cterm_color_16[16] =
-{
- (long_u)0x000000L, (long_u)0x0000c0L, (long_u)0x008000L, (long_u)0x004080L,
- (long_u)0xc00000L, (long_u)0xc000c0L, (long_u)0x808000L, (long_u)0xc0c0c0L,
- (long_u)0x808080L, (long_u)0x6060ffL, (long_u)0x00ff00L, (long_u)0x00ffffL,
- (long_u)0xff8080L, (long_u)0xff40ffL, (long_u)0xffff00L, (long_u)0xffffffL
+static const uint32_t cterm_color_16[16] = {
+ 0x000000, 0x0000c0, 0x008000, 0x004080,
+ 0xc00000, 0xc000c0, 0x808000, 0xc0c0c0,
+ 0x808080, 0x6060ff, 0x00ff00, 0x00ffff,
+ 0xff8080, 0xff40ff, 0xffff00, 0xffffff
};
static int current_syn_id;
-#define PRCOLOR_BLACK (long_u)0
-#define PRCOLOR_WHITE (long_u)0xFFFFFFL
+#define PRCOLOR_BLACK 0
+#define PRCOLOR_WHITE 0xffffff
static int curr_italic;
static int curr_bold;
static int curr_underline;
-static long_u curr_bg;
-static long_u curr_fg;
+static uint32_t curr_bg;
+static uint32_t curr_fg;
static int page_count;
# define OPT_MBFONT_USECOURIER 0
@@ -176,7 +175,7 @@ typedef struct {
int print_pos; /* virtual column for computing TABs */
colnr_T column; /* byte column */
linenr_T file_line; /* line nr in the buffer */
- long_u bytes_printed; /* bytes printed so far */
+ size_t bytes_printed; /* bytes printed so far */
int ff; /* seen form feed character */
} prt_pos_T;
@@ -340,14 +339,14 @@ static char_u *parse_list_options(char_u *option_str, option_table_T *table, int
* If using a dark background, the colors will probably be too bright to show
* up well on white paper, so reduce their brightness.
*/
-static long_u darken_rgb(long_u rgb)
+static uint32_t darken_rgb(uint32_t rgb)
{
return ((rgb >> 17) << 16)
+ (((rgb & 0xff00) >> 9) << 8)
+ ((rgb & 0xff) >> 1);
}
-static long_u prt_get_term_color(int colorindex)
+static uint32_t prt_get_term_color(int colorindex)
{
/* TODO: Should check for xterm with 88 or 256 colors. */
if (t_colors > 8)
@@ -358,8 +357,8 @@ static long_u prt_get_term_color(int colorindex)
static void prt_get_attr(int hl_id, prt_text_attr_T *pattr, int modec)
{
int colorindex;
- long_u fg_color;
- long_u bg_color;
+ uint32_t fg_color;
+ uint32_t bg_color;
char *color;
pattr->bold = (highlight_has_attr(hl_id, HL_BOLD, modec) != NULL);
@@ -391,7 +390,7 @@ static void prt_get_attr(int hl_id, prt_text_attr_T *pattr, int modec)
pattr->bg_color = bg_color;
}
-static void prt_set_fg(long_u fg)
+static void prt_set_fg(uint32_t fg)
{
if (fg != curr_fg) {
curr_fg = fg;
@@ -399,7 +398,7 @@ static void prt_set_fg(long_u fg)
}
}
-static void prt_set_bg(long_u bg)
+static void prt_set_bg(uint32_t bg)
{
if (bg != curr_bg) {
curr_bg = bg;
@@ -455,8 +454,11 @@ static void prt_line_number(prt_settings_T *psettings, int page_line, linenr_T l
*/
int prt_header_height(void)
{
- if (printer_opts[OPT_PRINT_HEADERHEIGHT].present)
- return printer_opts[OPT_PRINT_HEADERHEIGHT].number;
+ if (printer_opts[OPT_PRINT_HEADERHEIGHT].present) {
+ assert(printer_opts[OPT_PRINT_HEADERHEIGHT].number >= INT_MIN
+ && printer_opts[OPT_PRINT_HEADERHEIGHT].number <= INT_MAX);
+ return (int)printer_opts[OPT_PRINT_HEADERHEIGHT].number;
+ }
return 2;
}
@@ -503,7 +505,8 @@ static void prt_header(prt_settings_T *psettings, int pagenum, linenr_T lnum)
if (prt_use_number())
width += PRINT_NUMBER_WIDTH;
- tbuf = xmalloc(width + IOSIZE);
+ assert(width >= 0);
+ tbuf = xmalloc((size_t)width + IOSIZE);
if (*p_header != NUL) {
linenr_T tmp_lnum, tmp_topline, tmp_botline;
@@ -524,7 +527,7 @@ static void prt_header(prt_settings_T *psettings, int pagenum, linenr_T lnum)
printer_page_num = pagenum;
use_sandbox = was_set_insecurely((char_u *)"printheader", 0);
- build_stl_str_hl(curwin, tbuf, (size_t)(width + IOSIZE),
+ build_stl_str_hl(curwin, tbuf, (size_t)width + IOSIZE,
p_header, use_sandbox,
' ', width, NULL, NULL);
@@ -582,7 +585,7 @@ void ex_hardcopy(exarg_T *eap)
linenr_T lnum;
int collated_copies, uncollated_copies;
prt_settings_T settings;
- long_u bytes_to_print = 0;
+ size_t bytes_to_print = 0;
int page_line;
int jobsplit;
@@ -655,15 +658,15 @@ void ex_hardcopy(exarg_T *eap)
* Estimate the total lines to be printed
*/
for (lnum = eap->line1; lnum <= eap->line2; lnum++)
- bytes_to_print += (long_u)STRLEN(skipwhite(ml_get(lnum)));
+ bytes_to_print += STRLEN(skipwhite(ml_get(lnum)));
if (bytes_to_print == 0) {
MSG(_("No text to be printed"));
goto print_fail_no_begin;
}
/* Set colors and font to normal. */
- curr_bg = (long_u)0xffffffffL;
- curr_fg = (long_u)0xffffffffL;
+ curr_bg = 0xffffffff;
+ curr_fg = 0xffffffff;
curr_italic = MAYBE;
curr_bold = MAYBE;
curr_underline = MAYBE;
@@ -728,13 +731,10 @@ void ex_hardcopy(exarg_T *eap)
if (got_int || settings.user_abort)
goto print_fail;
- sprintf((char *)IObuff, _("Printing page %d (%d%%)"),
- page_count + 1 + side,
- prtpos.bytes_printed > 1000000
- ? (int)(prtpos.bytes_printed /
- (bytes_to_print / 100))
- : (int)((prtpos.bytes_printed * 100)
- / bytes_to_print));
+ assert(prtpos.bytes_printed * 100 > prtpos.bytes_printed);
+ sprintf((char *)IObuff, _("Printing page %d (%zu%%)"),
+ page_count + 1 + side,
+ prtpos.bytes_printed * 100 / bytes_to_print);
if (!mch_print_begin_page(IObuff))
goto print_fail;
@@ -820,7 +820,7 @@ static colnr_T hardcopy_line(prt_settings_T *psettings, int page_line, prt_pos_T
int need_break = FALSE;
int outputlen;
int tab_spaces;
- long_u print_pos;
+ int print_pos;
prt_text_attr_T attr;
int id;
@@ -900,7 +900,7 @@ static colnr_T hardcopy_line(prt_settings_T *psettings, int page_line, prt_pos_T
}
ppos->lead_spaces = tab_spaces;
- ppos->print_pos = (int)print_pos;
+ ppos->print_pos = print_pos;
/*
* Start next line of file if we clip lines, or have reached end of the
@@ -1240,19 +1240,19 @@ static char_u *prt_ps_file_name = NULL;
* Various offsets and dimensions in default PostScript user space (points).
* Used for text positioning calculations
*/
-static float prt_page_width;
-static float prt_page_height;
-static float prt_left_margin;
-static float prt_right_margin;
-static float prt_top_margin;
-static float prt_bottom_margin;
-static float prt_line_height;
-static float prt_first_line_height;
-static float prt_char_width;
-static float prt_number_width;
-static float prt_bgcol_offset;
-static float prt_pos_x_moveto = 0.0;
-static float prt_pos_y_moveto = 0.0;
+static double prt_page_width;
+static double prt_page_height;
+static double prt_left_margin;
+static double prt_right_margin;
+static double prt_top_margin;
+static double prt_bottom_margin;
+static double prt_line_height;
+static double prt_first_line_height;
+static double prt_char_width;
+static double prt_number_width;
+static double prt_bgcol_offset;
+static double prt_pos_x_moveto = 0.0;
+static double prt_pos_y_moveto = 0.0;
/*
* Various control variables used to decide when and how to change the
@@ -1272,7 +1272,7 @@ static int prt_do_bgcol;
static int prt_bgcol;
static int prt_new_bgcol;
static int prt_attribute_change;
-static float prt_text_run;
+static double prt_text_run;
static int prt_page_num;
static int prt_bufsiz;
@@ -1304,11 +1304,10 @@ static int prt_half_width;
static char *prt_ascii_encoding;
static char_u prt_hexchar[] = "0123456789abcdef";
-static void prt_write_file_raw_len(char_u *buffer, int bytes)
+static void prt_write_file_raw_len(char_u *buffer, size_t bytes)
{
if (!prt_file_error
- && fwrite(buffer, sizeof(char_u), bytes, prt_ps_fd)
- != (size_t)bytes) {
+ && fwrite(buffer, sizeof(char_u), bytes, prt_ps_fd) != bytes) {
EMSG(_("E455: Error writing to PostScript output file"));
prt_file_error = TRUE;
}
@@ -1316,10 +1315,10 @@ static void prt_write_file_raw_len(char_u *buffer, int bytes)
static void prt_write_file(char_u *buffer)
{
- prt_write_file_len(buffer, (int)STRLEN(buffer));
+ prt_write_file_len(buffer, STRLEN(buffer));
}
-static void prt_write_file_len(char_u *buffer, int bytes)
+static void prt_write_file_len(char_u *buffer, size_t bytes)
{
prt_write_file_raw_len(buffer, bytes);
}
@@ -1398,15 +1397,11 @@ static void prt_dup_cidfont(char *original_name, char *new_name)
*/
static void prt_real_bits(double real, int precision, int *pinteger, int *pfraction)
{
- int i;
- int integer;
- float fraction;
-
- integer = (int)real;
- fraction = (float)(real - integer);
- if (real < (double)integer)
+ int integer = (int)real;
+ double fraction = real - integer;
+ if (real < integer)
fraction = -fraction;
- for (i = 0; i < precision; i++)
+ for (int i = 0; i < precision; i++)
fraction *= 10.0;
*pinteger = integer;
@@ -1463,7 +1458,7 @@ static void prt_flush_buffer(void)
if (!GA_EMPTY(&prt_ps_buffer)) {
/* Any background color must be drawn first */
if (prt_do_bgcol && (prt_new_bgcol != PRCOLOR_WHITE)) {
- int r, g, b;
+ unsigned int r, g, b;
if (prt_do_moveto) {
prt_write_real(prt_pos_x_moveto, 2);
@@ -1505,7 +1500,8 @@ static void prt_flush_buffer(void)
prt_write_string("<");
else
prt_write_string("(");
- prt_write_file_raw_len(prt_ps_buffer.ga_data, prt_ps_buffer.ga_len);
+ assert(prt_ps_buffer.ga_len >= 0);
+ prt_write_file_raw_len(prt_ps_buffer.ga_data, (size_t)prt_ps_buffer.ga_len);
if (prt_out_mbyte)
prt_write_string(">");
else
@@ -1954,32 +1950,34 @@ void mch_print_cleanup(void)
}
}
-static float to_device_units(int idx, double physsize, int def_number)
+static double to_device_units(int idx, double physsize, int def_number)
{
- float ret;
- int u;
+ double ret;
int nr;
- u = prt_get_unit(idx);
+ int u = prt_get_unit(idx);
if (u == PRT_UNIT_NONE) {
u = PRT_UNIT_PERC;
nr = def_number;
- } else
- nr = printer_opts[idx].number;
+ } else {
+ assert(printer_opts[idx].number >= INT_MIN
+ && printer_opts[idx].number <= INT_MAX);
+ nr = (int)printer_opts[idx].number;
+ }
switch (u) {
case PRT_UNIT_INCH:
- ret = (float)(nr * PRT_PS_DEFAULT_DPI);
+ ret = nr * PRT_PS_DEFAULT_DPI;
break;
case PRT_UNIT_MM:
- ret = (float)(nr * PRT_PS_DEFAULT_DPI) / (float)25.4;
+ ret = nr * PRT_PS_DEFAULT_DPI / 25.4;
break;
case PRT_UNIT_POINT:
- ret = (float)nr;
+ ret = nr;
break;
case PRT_UNIT_PERC:
default:
- ret = (float)(physsize * nr) / 100;
+ ret = physsize * nr / 100;
break;
}
@@ -2022,7 +2020,8 @@ static int prt_get_cpl(void)
static void prt_build_cid_fontname(int font, char_u *name, int name_len)
{
- char *fontname = xstrndup((char *)name, name_len);
+ assert(name_len >= 0);
+ char *fontname = xstrndup((char *)name, (size_t)name_len);
prt_ps_mb_font.ps_fontname[font] = fontname;
}
@@ -2408,7 +2407,7 @@ static int prt_add_resource(struct prt_ps_resource_S *resource)
}
if (bytes_read == 0)
break;
- prt_write_file_raw_len(resource_buffer, (int)bytes_read);
+ prt_write_file_raw_len(resource_buffer, bytes_read);
if (prt_file_error) {
fclose(fd_resource);
return FALSE;
@@ -2851,8 +2850,8 @@ int mch_print_begin_page(char_u *str)
prt_dsc_noarg("EndPageSetup");
/* We have reset the font attributes, force setting them again. */
- curr_bg = (long_u)0xffffffff;
- curr_fg = (long_u)0xffffffff;
+ curr_bg = 0xffffffff;
+ curr_fg = 0xffffffff;
curr_bold = MAYBE;
return !prt_file_error;
@@ -2863,8 +2862,8 @@ int mch_print_blank_page(void)
return mch_print_begin_page(NULL) ? (mch_print_end_page()) : FALSE;
}
-static float prt_pos_x = 0;
-static float prt_pos_y = 0;
+static double prt_pos_x = 0;
+static double prt_pos_y = 0;
void mch_print_start_line(int margin, int page_line)
{
@@ -2885,8 +2884,8 @@ int mch_print_text_out(char_u *p, int len)
int need_break;
char_u ch;
char_u ch_buff[8];
- float char_width;
- float next_pos;
+ double char_width;
+ double next_pos;
int in_ascii;
int half_width;
@@ -2959,7 +2958,7 @@ int mch_print_text_out(char_u *p, int len)
prt_need_font = FALSE;
}
if (prt_need_fgcol) {
- int r, g, b;
+ unsigned int r, g, b;
r = ((unsigned)prt_fgcol & 0xff0000) >> 16;
g = ((unsigned)prt_fgcol & 0xff00) >> 8;
b = prt_fgcol & 0xff;
@@ -3003,9 +3002,9 @@ int mch_print_text_out(char_u *p, int len)
*/
do {
ch = prt_hexchar[(unsigned)(*p) >> 4];
- ga_append(&prt_ps_buffer, ch);
+ ga_append(&prt_ps_buffer, (char)ch);
ch = prt_hexchar[(*p) & 0xf];
- ga_append(&prt_ps_buffer, ch);
+ ga_append(&prt_ps_buffer, (char)ch);
p++;
} while (--len);
} else {
@@ -3032,13 +3031,13 @@ int mch_print_text_out(char_u *p, int len)
default:
sprintf((char *)ch_buff, "%03o", (unsigned int)ch);
- ga_append(&prt_ps_buffer, ch_buff[0]);
- ga_append(&prt_ps_buffer, ch_buff[1]);
- ga_append(&prt_ps_buffer, ch_buff[2]);
+ ga_append(&prt_ps_buffer, (char)ch_buff[0]);
+ ga_append(&prt_ps_buffer, (char)ch_buff[1]);
+ ga_append(&prt_ps_buffer, (char)ch_buff[2]);
break;
}
} else
- ga_append(&prt_ps_buffer, ch);
+ ga_append(&prt_ps_buffer, (char)ch);
}
/* Need to free any translated characters */
@@ -3080,16 +3079,18 @@ void mch_print_set_font(int iBold, int iItalic, int iUnderline)
}
}
-void mch_print_set_bg(long_u bgcol)
+void mch_print_set_bg(uint32_t bgcol)
{
+ assert(bgcol <= INT_MAX);
prt_bgcol = (int)bgcol;
prt_attribute_change = TRUE;
prt_need_bgcol = TRUE;
}
-void mch_print_set_fg(long_u fgcol)
+void mch_print_set_fg(uint32_t fgcol)
{
- if (fgcol != (long_u)prt_fgcol) {
+ assert(fgcol <= INT_MAX);
+ if ((int)fgcol != prt_fgcol) {
prt_fgcol = (int)fgcol;
prt_attribute_change = TRUE;
prt_need_fgcol = TRUE;
diff --git a/src/nvim/hardcopy.h b/src/nvim/hardcopy.h
index fa171db989..9a74396ef4 100644
--- a/src/nvim/hardcopy.h
+++ b/src/nvim/hardcopy.h
@@ -1,12 +1,14 @@
#ifndef NVIM_HARDCOPY_H
#define NVIM_HARDCOPY_H
+#include <stdint.h>
+
/*
* Structure to hold printing color and font attributes.
*/
typedef struct {
- long_u fg_color;
- long_u bg_color;
+ uint32_t fg_color;
+ uint32_t bg_color;
int bold;
int italic;
int underline;
diff --git a/src/nvim/keymap.c b/src/nvim/keymap.c
index 33eaf35555..251926c01a 100644
--- a/src/nvim/keymap.c
+++ b/src/nvim/keymap.c
@@ -487,7 +487,7 @@ char_u *get_special_key_name(int c, int modifiers)
* If there is a match, srcp is advanced to after the <> name.
* dst[] must be big enough to hold the result (up to six characters)!
*/
-int
+unsigned int
trans_special (
char_u **srcp,
char_u *dst,
@@ -729,9 +729,9 @@ int get_special_key_code(char_u *name)
return 0;
}
-char_u *get_key_name(int i)
+char_u *get_key_name(size_t i)
{
- if (i >= (int)KEY_NAMES_TABLE_LEN)
+ if (i >= KEY_NAMES_TABLE_LEN)
return NULL;
return key_names_table[i].name;
}
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 00815d60a5..20e983b253 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -7257,7 +7257,6 @@ int ExpandSettings(expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***
{
int num_normal = 0; /* Nr of matching non-term-code settings */
int num_term = 0; /* Nr of matching terminal code settings */
- int opt_idx;
int match;
int count = 0;
char_u *str;
@@ -7283,7 +7282,7 @@ int ExpandSettings(expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***
(*file)[count++] = vim_strsave((char_u *)names[match]);
}
}
- for (opt_idx = 0; (str = (char_u *)options[opt_idx].fullname) != NULL;
+ for (size_t opt_idx = 0; (str = (char_u *)options[opt_idx].fullname) != NULL;
opt_idx++) {
if (options[opt_idx].var == NULL)
continue;
@@ -7326,7 +7325,7 @@ int ExpandSettings(expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***
* Check terminal key codes, these are not in the option table
*/
if (xp->xp_context != EXPAND_BOOL_SETTINGS && num_normal == 0) {
- for (opt_idx = 0; (str = get_termcode(opt_idx)) != NULL; opt_idx++) {
+ for (size_t opt_idx = 0; (str = get_termcode(opt_idx)) != NULL; opt_idx++) {
if (!isprint(str[0]) || !isprint(str[1]))
continue;
@@ -7363,7 +7362,7 @@ int ExpandSettings(expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***
* Check special key names.
*/
regmatch->rm_ic = TRUE; /* ignore case here */
- for (opt_idx = 0; (str = get_key_name(opt_idx)) != NULL; opt_idx++) {
+ for (size_t opt_idx = 0; (str = get_key_name(opt_idx)) != NULL; opt_idx++) {
name_buf[0] = '<';
STRCPY(name_buf + 1, str);
STRCAT(name_buf, ">");
diff --git a/src/nvim/os/input.c b/src/nvim/os/input.c
index cddc28fac9..c0d588f4ef 100644
--- a/src/nvim/os/input.c
+++ b/src/nvim/os/input.c
@@ -184,7 +184,7 @@ size_t input_enqueue(String keys)
while (rbuffer_available(input_buffer) >= 6 && ptr < end) {
uint8_t buf[6] = {0};
- int new_size = trans_special((uint8_t **)&ptr, buf, false);
+ unsigned int new_size = trans_special((uint8_t **)&ptr, buf, false);
if (!new_size) {
// copy the character unmodified
@@ -195,7 +195,7 @@ size_t input_enqueue(String keys)
new_size = handle_mouse_event(&ptr, buf, new_size);
// TODO(tarruda): Don't produce past unclosed '<' characters, except if
// there's a lot of characters after the '<'
- rbuffer_write(input_buffer, (char *)buf, (size_t)new_size);
+ rbuffer_write(input_buffer, (char *)buf, new_size);
}
size_t rv = (size_t)(ptr - keys.data);
@@ -205,7 +205,8 @@ size_t input_enqueue(String keys)
// Mouse event handling code(Extract row/col if available and detect multiple
// clicks)
-static int handle_mouse_event(char **ptr, uint8_t *buf, int bufsize)
+static unsigned int handle_mouse_event(char **ptr, uint8_t *buf,
+ unsigned int bufsize)
{
int mouse_code = 0;
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c
index 6787ca8080..f35da39bb3 100644
--- a/src/nvim/syntax.c
+++ b/src/nvim/syntax.c
@@ -6593,7 +6593,7 @@ do_highlight (
* Copy characters from arg[] to buf[], translating <> codes.
*/
for (p = arg, off = 0; off < 100 - 6 && *p; ) {
- len = trans_special(&p, buf + off, FALSE);
+ len = (int)trans_special(&p, buf + off, FALSE);
if (len > 0) /* recognized special char */
off += len;
else /* copy as normal char */
diff --git a/src/nvim/term.c b/src/nvim/term.c
index cf2b78394f..dfc42632c6 100644
--- a/src/nvim/term.c
+++ b/src/nvim/term.c
@@ -22,6 +22,7 @@
*/
#define tgetstr tgetstr_defined_wrong
+#include <assert.h>
#include <errno.h>
#include <inttypes.h>
#include <stdbool.h>
@@ -1065,8 +1066,8 @@ static void parse_builtin_tcap(char_u *term)
term_strings[p->bt_entry] = (char_u *)p->bt_string;
}
} else {
- name[0] = KEY2TERMCAP0((int)p->bt_entry);
- name[1] = KEY2TERMCAP1((int)p->bt_entry);
+ name[0] = (char_u)KEY2TERMCAP0(p->bt_entry);
+ name[1] = (char_u)KEY2TERMCAP1(p->bt_entry);
if (find_termcode(name) == NULL)
add_termcode(name, (char_u *)p->bt_string, term_8bit);
}
@@ -1255,7 +1256,7 @@ int set_termname(char_u *term)
UP = (char *)TGETSTR("up", &tp);
p = TGETSTR("pc", &tp);
if (p)
- PC = *p;
+ PC = (char)*p;
}
} else /* try == 0 || try == 2 */
#endif /* HAVE_TGETENT */
@@ -1478,7 +1479,7 @@ int set_termname(char_u *term)
void
set_mouse_termcode (
- int n, /* KS_MOUSE, KS_NETTERM_MOUSE or KS_DEC_MOUSE */
+ char_u n, /* KS_MOUSE, KS_NETTERM_MOUSE or KS_DEC_MOUSE */
char_u *s
)
{
@@ -1490,7 +1491,7 @@ set_mouse_termcode (
# if (defined(UNIX) && defined(FEAT_MOUSE_TTY)) || defined(PROTO)
void
del_mouse_termcode (
- int n /* KS_MOUSE, KS_NETTERM_MOUSE or KS_DEC_MOUSE */
+ char_u n /* KS_MOUSE, KS_NETTERM_MOUSE or KS_DEC_MOUSE */
)
{
char_u name[2] = { n, KE_FILLER };
@@ -1690,7 +1691,7 @@ bool term_is_8bit(char_u *name)
* <Esc>] -> <M-C-]>
* <Esc>O -> <M-C-O>
*/
-static int term_7to8bit(char_u *p)
+static char_u term_7to8bit(char_u *p)
{
if (*p == ESC) {
if (p[1] == '[')
@@ -1801,7 +1802,9 @@ void term_write(char_u *s, size_t len)
#ifdef UNIX
if (p_wd) { // Unix is too fast, slow down a bit more
- os_microdelay(p_wd);
+ assert(p_wd >= 0
+ && (sizeof(long) <= sizeof(uint64_t) || p_wd <= UINT64_MAX));
+ os_microdelay((uint64_t)p_wd);
}
#endif
}
@@ -1843,7 +1846,7 @@ void out_flush_check(void)
* This should not be used for outputting text on the screen (use functions
* like msg_puts() and screen_putchar() for that).
*/
-void out_char(unsigned c)
+void out_char(char_u c)
{
#if defined(UNIX) || defined(MACOS_X_UNIX)
if (c == '\n') /* turn LF into CR-LF (CRMOD doesn't seem to do this) */
@@ -1861,7 +1864,7 @@ void out_char(unsigned c)
/*
* out_char_nf(c): like out_char(), but don't flush when p_wd is set
*/
-static void out_char_nf(unsigned c)
+static void out_char_nf(char_u c)
{
#if defined(UNIX) || defined(MACOS_X_UNIX)
if (c == '\n') /* turn LF into CR-LF (CRMOD doesn't seem to do this) */
@@ -2112,31 +2115,6 @@ void ttest(int pairs)
t_colors = atoi((char *)T_CCO);
}
-#if defined(FEAT_GUI) || defined(PROTO)
-/*
- * Interpret the next string of bytes in buf as a long integer, with the most
- * significant byte first. Note that it is assumed that buf has been through
- * inchar(), so that NUL and K_SPECIAL will be represented as three bytes each.
- * Puts result in val, and returns the number of bytes read from buf
- * (between sizeof(long_u) and 2 * sizeof(long_u)), or -1 if not enough bytes
- * were present.
- */
-static int get_long_from_buf(char_u *buf, long_u *val)
-{
- char_u bytes[sizeof(long_u)];
-
- *val = 0;
- int len = get_bytes_from_buf(buf, bytes, (int)sizeof(long_u));
- if (len != -1) {
- for (int i = 0; i < (int)sizeof(long_u); i++) {
- int shift = 8 * (sizeof(long_u) - 1 - i);
- *val += (long_u)bytes[i] << shift;
- }
- }
- return len;
-}
-#endif
-
#if defined(FEAT_GUI) \
|| (defined(FEAT_MOUSE) && (!defined(UNIX) || defined(FEAT_MOUSE_XTERM) \
|| defined(FEAT_MOUSE_GPM) || defined(FEAT_SYSMOUSE)))
@@ -2203,8 +2181,8 @@ void limit_screen_size(void)
*/
void win_new_shellsize(void)
{
- static int old_Rows = 0;
- static int old_Columns = 0;
+ static long old_Rows = 0;
+ static long old_Columns = 0;
if (old_Rows != Rows) {
/* if 'window' uses the whole screen, keep it using that */
@@ -2234,11 +2212,10 @@ void shell_resized(void)
*/
void shell_resized_check(void)
{
- int old_Rows = Rows;
- int old_Columns = Columns;
+ long old_Rows = Rows;
+ long old_Columns = Columns;
- if (!exiting
- ) {
+ if (!exiting) {
(void)ui_get_shellsize();
check_shellsize();
if (old_Rows != Rows || old_Columns != Columns)
@@ -2588,13 +2565,13 @@ static struct termcode {
int modlen; /* length of part before ";*~". */
} *termcodes = NULL;
-static int tc_max_len = 0; /* number of entries that termcodes[] can hold */
-static int tc_len = 0; /* current number of entries in termcodes[] */
+static size_t tc_max_len = 0; /* number of entries that termcodes[] can hold */
+static size_t tc_len = 0; /* current number of entries in termcodes[] */
void clear_termcodes(void)
{
- while (tc_len > 0)
+ while (tc_len != 0)
free(termcodes[--tc_len].code);
free(termcodes);
termcodes = NULL;
@@ -2621,7 +2598,7 @@ void clear_termcodes(void)
void add_termcode(char_u *name, char_u *string, int flags)
{
struct termcode *new_tc;
- int i, j;
+ size_t i, j;
if (string == NULL || *string == NUL) {
del_termcode(name);
@@ -2635,7 +2612,7 @@ void add_termcode(char_u *name, char_u *string, int flags)
STRMOVE(s, s + 1);
s[0] = term_7to8bit(string);
}
- int len = (int)STRLEN(s);
+ size_t len = STRLEN(s);
need_gather = true; // need to fill termleader[]
@@ -2666,15 +2643,14 @@ void add_termcode(char_u *name, char_u *string, int flags)
* Exact match: May replace old code.
*/
if (termcodes[i].name[1] == name[1]) {
- if (flags == ATC_FROM_TERM && (j = termcode_star(
- termcodes[i].code,
- termcodes[i].len)) > 0) {
+ if (flags == ATC_FROM_TERM
+ && (j = termcode_star(termcodes[i].code, termcodes[i].len)) > 0) {
/* Don't replace ESC[123;*X or ESC O*X with another when
* invoked from got_code_from_term(). */
- if (len == termcodes[i].len - j
+ assert(termcodes[i].len >= 0);
+ if (len == (size_t)termcodes[i].len - j
&& STRNCMP(s, termcodes[i].code, len - 1) == 0
- && s[len - 1]
- == termcodes[i].code[termcodes[i].len - 1]) {
+ && s[len - 1] == termcodes[i].code[termcodes[i].len - 1]) {
/* They are equal but for the ";*": don't add it. */
free(s);
return;
@@ -2698,14 +2674,15 @@ void add_termcode(char_u *name, char_u *string, int flags)
termcodes[i].name[0] = name[0];
termcodes[i].name[1] = name[1];
termcodes[i].code = s;
- termcodes[i].len = len;
+ assert(len <= INT_MAX);
+ termcodes[i].len = (int)len;
/* For xterm we recognize special codes like "ESC[42;*X" and "ESC O*X" that
* accept modifiers. */
termcodes[i].modlen = 0;
- j = termcode_star(s, len);
+ j = termcode_star(s, (int)len);
if (j > 0)
- termcodes[i].modlen = len - 1 - j;
+ termcodes[i].modlen = (int)(len - 1 - j);
++tc_len;
}
@@ -2714,7 +2691,7 @@ void add_termcode(char_u *name, char_u *string, int flags)
* The "X" can be any character.
* Return 0 if not found, 2 for ;*X and 1 for O*X and <M-O>*X.
*/
-static int termcode_star(char_u *code, int len)
+static unsigned int termcode_star(char_u *code, int len)
{
/* Shortest is <M-O>*X. With ; shortest is <CSI>1;*X */
if (len >= 3 && code[len - 2] == '*') {
@@ -2728,13 +2705,13 @@ static int termcode_star(char_u *code, int len)
char_u *find_termcode(char_u *name)
{
- for (int i = 0; i < tc_len; ++i)
+ for (size_t i = 0; i < tc_len; ++i)
if (termcodes[i].name[0] == name[0] && termcodes[i].name[1] == name[1])
return termcodes[i].code;
return NULL;
}
-char_u *get_termcode(int i)
+char_u *get_termcode(size_t i)
{
if (i >= tc_len)
return NULL;
@@ -2748,7 +2725,7 @@ void del_termcode(char_u *name)
need_gather = true; // need to fill termleader[]
- for (int i = 0; i < tc_len; ++i)
+ for (size_t i = 0; i < tc_len; ++i)
if (termcodes[i].name[0] == name[0] && termcodes[i].name[1] == name[1]) {
del_termcode_idx(i);
return;
@@ -2756,11 +2733,11 @@ void del_termcode(char_u *name)
/* not found. Give error message? */
}
-static void del_termcode_idx(int idx)
+static void del_termcode_idx(size_t idx)
{
free(termcodes[idx].code);
--tc_len;
- for (int i = idx; i < tc_len; ++i)
+ for (size_t i = idx; i < tc_len; ++i)
termcodes[i] = termcodes[i + 1];
}
@@ -2772,8 +2749,8 @@ static void switch_to_8bit(void)
{
/* Only need to do something when not already using 8-bit codes. */
if (!term_is_8bit(T_NAME)) {
- for (int i = 0; i < tc_len; ++i) {
- int c = term_7to8bit(termcodes[i].code);
+ for (size_t i = 0; i < tc_len; ++i) {
+ char_u c = term_7to8bit(termcodes[i].code);
if (c != 0) {
STRMOVE(termcodes[i].code + 1, termcodes[i].code + 2);
termcodes[i].code[0] = c;
@@ -2837,19 +2814,18 @@ int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen)
int extra;
char_u string[MAX_KEY_CODE_LEN + 1];
int i, j;
- int idx = 0;
# if !defined(UNIX) || defined(FEAT_MOUSE_XTERM) || defined(FEAT_GUI) \
|| defined(FEAT_MOUSE_GPM) || defined(FEAT_SYSMOUSE)
char_u bytes[6];
int num_bytes;
# endif
- int mouse_code = 0; /* init for GCC */
+ long mouse_code = 0; /* init for GCC */
int is_click, is_drag;
- int wheel_code = 0;
- int current_button;
- static int held_button = MOUSE_RELEASE;
+ long wheel_code = 0;
+ long current_button;
+ static long held_button = MOUSE_RELEASE;
static int orig_num_clicks = 1;
- static int orig_mouse_code = 0x0;
+ static long orig_mouse_code = 0x0;
int cpo_koffset;
cpo_koffset = (vim_strchr(p_cpo, CPO_KOFFSET) != NULL);
@@ -2912,6 +2888,7 @@ int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen)
key_name[1] = NUL; /* no key name found yet */
modifiers = 0; /* no modifiers yet */
+ size_t idx;
{
for (idx = 0; idx < tc_len; ++idx) {
/*
@@ -2936,10 +2913,10 @@ int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen)
*/
if (termcodes[idx].name[0] == 'K'
&& VIM_ISDIGIT(termcodes[idx].name[1])) {
- for (j = idx + 1; j < tc_len; ++j)
- if (termcodes[j].len == slen &&
- STRNCMP(termcodes[idx].code,
- termcodes[j].code, slen) == 0) {
+ for (size_t j = idx + 1; j < tc_len; ++j)
+ if (termcodes[j].len == slen
+ && STRNCMP(termcodes[idx].code,
+ termcodes[j].code, slen) == 0) {
idx = j;
break;
}
@@ -3261,11 +3238,15 @@ int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen)
if (key_name[0] == KS_SGR_MOUSE)
mouse_code += 32;
- mouse_col = getdigits(&p) - 1;
+ long digits = getdigits(&p);
+ assert(digits >= INT_MIN && digits <= INT_MAX);
+ mouse_col = (int)digits - 1;
if (*p++ != ';')
return -1;
- mouse_row = getdigits(&p) - 1;
+ digits = getdigits(&p);
+ assert(digits >= INT_MIN && digits <= INT_MAX);
+ mouse_row = (int)digits - 1;
if (key_name[0] == KS_SGR_MOUSE && *p == 'm')
mouse_code |= MOUSE_RELEASE;
else if (*p != 'M')
@@ -3331,7 +3312,7 @@ int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen)
}
# endif /* !UNIX || FEAT_MOUSE_XTERM */
if (key_name[0] == (int)KS_NETTERM_MOUSE) {
- int mc, mr;
+ long mc, mr;
/* expect a rather limited sequence like: balancing {
* \033}6,45\r
@@ -3345,8 +3326,10 @@ int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen)
if (*p++ != '\r')
return -1;
- mouse_col = mc - 1;
- mouse_row = mr - 1;
+ assert(mc - 1 >= INT_MIN && mc - 1 <= INT_MAX);
+ mouse_col = (int)(mc - 1);
+ assert(mr - 1 >= INT_MIN && mr - 1 <= INT_MAX);
+ mouse_row = (int)(mr - 1);
mouse_code = MOUSE_LEFT;
slen += (int)(p - (tp + slen));
}
@@ -3401,7 +3384,7 @@ int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen)
* The page coordinate may be omitted if the locator is on
* page one (the default). We ignore it anyway.
*/
- int Pe, Pb, Pr, Pc;
+ long Pe, Pb, Pr, Pc;
p = tp + slen;
@@ -3470,8 +3453,10 @@ int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen)
default: return -1; /* should never occur */
}
- mouse_col = Pc - 1;
- mouse_row = Pr - 1;
+ assert(Pc - 1 >= INT_MIN && Pc - 1 <= INT_MAX);
+ mouse_col = (int)(Pc - 1);
+ assert(Pr - 1 >= INT_MIN && Pr - 1 <= INT_MAX);
+ mouse_row = (int)(Pr - 1);
slen += (int)(p - (tp + slen));
}
@@ -3502,7 +3487,7 @@ int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen)
// compute the time elapsed since the previous mouse click and
// convert it from ns to ms because p_mouset is stored as ms
- long timediff = (long) (mouse_time - orig_mouse_time) / 1E6;
+ long timediff = (long) (mouse_time - orig_mouse_time) / 1000000;
orig_mouse_time = mouse_time;
if (mouse_code == orig_mouse_code
@@ -3558,9 +3543,11 @@ int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen)
modifiers |= MOD_MASK_ALT;
key_name[1] = (wheel_code & 1)
? (int)KE_MOUSEUP : (int)KE_MOUSEDOWN;
- } else
- key_name[1] = get_pseudo_mouse_code(current_button,
- is_click, is_drag);
+ } else {
+ assert(current_button >= INT_MIN && current_button <= INT_MAX);
+ key_name[1] = (char_u)get_pseudo_mouse_code((int)current_button,
+ is_click, is_drag);
+ }
}
@@ -3580,13 +3567,13 @@ int check_termcode(int max_offset, char_u *buf, int bufsize, int *buflen)
if (modifiers != 0) {
string[new_slen++] = K_SPECIAL;
string[new_slen++] = (int)KS_MODIFIER;
- string[new_slen++] = modifiers;
+ string[new_slen++] = (char_u)modifiers;
}
}
/* Finally, add the special key code to our string */
- key_name[0] = KEY2TERMCAP0(key);
- key_name[1] = KEY2TERMCAP1(key);
+ key_name[0] = (char_u)KEY2TERMCAP0(key);
+ key_name[1] = (char_u)KEY2TERMCAP1(key);
if (key_name[0] == KS_KEY) {
/* from ":set <M-b>=xx" */
if (has_mbyte)
@@ -3670,10 +3657,10 @@ replace_termcodes (
int special /* always accept <key> notation */
)
{
- int i;
- int slen;
- int key;
- int dlen = 0;
+ ssize_t i;
+ size_t slen;
+ char_u key;
+ size_t dlen = 0;
char_u *src;
int do_backslash; /* backslash is a special character */
int do_special; /* recognize <> key codes */
@@ -3727,7 +3714,7 @@ replace_termcodes (
result[dlen++] = (int)KS_EXTRA;
result[dlen++] = (int)KE_SNR;
sprintf((char *)result + dlen, "%" PRId64, (int64_t)current_SID);
- dlen += (int)STRLEN(result + dlen);
+ dlen += STRLEN(result + dlen);
result[dlen++] = '_';
continue;
}
@@ -3832,14 +3819,17 @@ replace_termcodes (
* Find a termcode with keys 'src' (must be NUL terminated).
* Return the index in termcodes[], or -1 if not found.
*/
-int find_term_bykeys(char_u *src)
+ssize_t find_term_bykeys(char_u *src)
{
- int slen = (int)STRLEN(src);
-
- for (int i = 0; i < tc_len; ++i) {
- if (slen == termcodes[i].len
- && STRNCMP(termcodes[i].code, src, (size_t)slen) == 0)
- return i;
+ size_t slen = STRLEN(src);
+
+ for (size_t i = 0; i < tc_len; ++i) {
+ assert(termcodes[i].len >= 0);
+ if (slen == (size_t)termcodes[i].len
+ && STRNCMP(termcodes[i].code, src, slen) == 0) {
+ assert(i <= SSIZE_MAX);
+ return (ssize_t)i;
+ }
}
return -1;
}
@@ -3861,7 +3851,7 @@ static void gather_termleader(void)
in 8-bit mode */
termleader[len] = NUL;
- for (int i = 0; i < tc_len; ++i)
+ for (size_t i = 0; i < tc_len; ++i)
if (vim_strchr(termleader, termcodes[i].code[0]) == NULL) {
termleader[len++] = termcodes[i].code[0];
termleader[len] = NUL;
@@ -3876,22 +3866,14 @@ static void gather_termleader(void)
*/
void show_termcodes(void)
{
- int col;
- int *items;
- int item_count;
- int run;
- int row, rows;
- int cols;
- int i;
- int len;
-
#define INC3 27 /* try to make three columns */
#define INC2 40 /* try to make two columns */
#define GAP 2 /* spaces between columns */
if (tc_len == 0) /* no terminal codes (must be GUI) */
return;
- items = xmalloc(sizeof(int) * tc_len);
+
+ size_t *items = xmalloc(sizeof(size_t) * tc_len);
/* Highlight title */
MSG_PUTS_TITLE(_("\n--- Terminal keys ---"));
@@ -3902,14 +3884,14 @@ void show_termcodes(void)
* 2. display the medium items (medium length strings)
* 3. display the long items (remaining strings)
*/
- for (run = 1; run <= 3 && !got_int; ++run) {
+ for (int run = 1; run <= 3 && !got_int; ++run) {
/*
* collect the items in items[]
*/
- item_count = 0;
- for (i = 0; i < tc_len; i++) {
- len = show_one_termcode(termcodes[i].name,
- termcodes[i].code, FALSE);
+ size_t item_count = 0;
+ for (size_t i = 0; i < tc_len; i++) {
+ int len = show_one_termcode(termcodes[i].name,
+ termcodes[i].code, FALSE);
if (len <= INC3 - GAP ? run == 1
: len <= INC2 - GAP ? run == 2
: run == 3)
@@ -3919,22 +3901,24 @@ void show_termcodes(void)
/*
* display the items
*/
+ size_t rows, cols;
if (run <= 2) {
- cols = (Columns + GAP) / (run == 1 ? INC3 : INC2);
+ cols = (size_t)(Columns + GAP) / (run == 1 ? INC3 : INC2);
if (cols == 0)
cols = 1;
rows = (item_count + cols - 1) / cols;
} else /* run == 3 */
rows = item_count;
- for (row = 0; row < rows && !got_int; ++row) {
+ for (size_t row = 0; row < rows && !got_int; ++row) {
msg_putchar('\n'); /* go to next line */
if (got_int) /* 'q' typed in more */
break;
- col = 0;
- for (i = row; i < item_count; i += rows) {
- msg_col = col; /* make columns */
+ size_t col = 0;
+ for (size_t i = row; i < item_count; i += rows) {
+ assert(col <= INT_MAX);
+ msg_col = (int)col; /* make columns */
show_one_termcode(termcodes[items[i]].name,
- termcodes[items[i]].code, TRUE);
+ termcodes[items[i]].code, TRUE);
if (run == 2)
col += INC2;
else
@@ -4047,7 +4031,7 @@ static void got_code_from_term(char_u *code, int len)
#define XT_LEN 100
char_u name[3];
char_u str[XT_LEN];
- int i;
+ ssize_t i;
int j = 0;
int c;
@@ -4056,12 +4040,17 @@ static void got_code_from_term(char_u *code, int len)
* Our names are currently all 2 characters. */
if (code[0] == '1' && code[7] == '=' && len / 2 < XT_LEN) {
/* Get the name from the response and find it in the table. */
- name[0] = hexhex2nr(code + 3);
- name[1] = hexhex2nr(code + 5);
+ int byte = hexhex2nr(code + 3);
+ assert(byte != -1);
+ name[0] = (char_u)byte;
+ byte = hexhex2nr(code + 5);
+ assert(byte != -1);
+ name[1] = (char_u)byte;
name[2] = NUL;
for (i = 0; key_names[i] != NULL; ++i) {
if (STRCMP(key_names[i], name) == 0) {
- xt_index_in = i;
+ assert(i <= INT_MAX);
+ xt_index_in = (int)i;
break;
}
}
@@ -4075,7 +4064,7 @@ static void got_code_from_term(char_u *code, int len)
# endif
if (key_names[i] != NULL) {
for (i = 8; (c = hexhex2nr(code + i)) >= 0; i += 2)
- str[j++] = c;
+ str[j++] = (char_u)c;
str[j] = NUL;
if (name[0] == 'C' && name[1] == 'o') {
/* Color count is not a key code. */
@@ -4104,7 +4093,7 @@ static void got_code_from_term(char_u *code, int len)
/* First delete any existing entry with the same code. */
i = find_term_bykeys(str);
if (i >= 0)
- del_termcode_idx(i);
+ del_termcode_idx((size_t)i);
add_termcode(name, str, ATC_FROM_TERM);
}
}
@@ -4192,7 +4181,7 @@ translate_mapping (
}
if (cpo_special && cpo_keycode && c == K_SPECIAL && !modifiers) {
/* try to find special key in termcodes */
- int i;
+ size_t i;
for (i = 0; i < tc_len; ++i)
if (termcodes[i].name[0] == str[1]
&& termcodes[i].name[1] == str[2])
@@ -4226,7 +4215,7 @@ translate_mapping (
|| (c == '<' && !cpo_special) || (c == '\\' && !cpo_bslash))
ga_append(&ga, cpo_bslash ? Ctrl_V : '\\');
if (c)
- ga_append(&ga, c);
+ ga_append(&ga, (char)c);
}
ga_append(&ga, NUL);
return (char_u *)(ga.ga_data);