mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge #1979 'Enable -Wconversion'
This commit is contained in:
commit
b1d079c83b
2
clint.py
2
clint.py
@ -2776,7 +2776,7 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension,
|
|||||||
# TODO(unknown): figure out if they're using default arguments in fn proto.
|
# TODO(unknown): figure out if they're using default arguments in fn proto.
|
||||||
|
|
||||||
# Check if people are using the verboten C basic types.
|
# Check if people are using the verboten C basic types.
|
||||||
match = Search(r'\b(short|long(?! +double)|long long)\b', line)
|
match = Search(r'\b(short|long long)\b', line)
|
||||||
if match:
|
if match:
|
||||||
error(filename, linenum, 'runtime/int', 4,
|
error(filename, linenum, 'runtime/int', 4,
|
||||||
'Use int16_t/int64_t/etc, rather than the C type %s'
|
'Use int16_t/int64_t/etc, rather than the C type %s'
|
||||||
|
@ -63,9 +63,6 @@ set(CONV_SOURCES
|
|||||||
fold.c
|
fold.c
|
||||||
getchar.c
|
getchar.c
|
||||||
if_cscope.c
|
if_cscope.c
|
||||||
indent.c
|
|
||||||
keymap.c
|
|
||||||
mark.c
|
|
||||||
mbyte.c
|
mbyte.c
|
||||||
memline.c
|
memline.c
|
||||||
menu.c
|
menu.c
|
||||||
@ -74,7 +71,6 @@ set(CONV_SOURCES
|
|||||||
move.c
|
move.c
|
||||||
normal.c
|
normal.c
|
||||||
ops.c
|
ops.c
|
||||||
os_unix.c
|
|
||||||
path.c
|
path.c
|
||||||
popupmnu.c
|
popupmnu.c
|
||||||
quickfix.c
|
quickfix.c
|
||||||
@ -84,7 +80,6 @@ set(CONV_SOURCES
|
|||||||
spell.c
|
spell.c
|
||||||
syntax.c
|
syntax.c
|
||||||
tag.c
|
tag.c
|
||||||
ui.c
|
|
||||||
window.c)
|
window.c)
|
||||||
|
|
||||||
foreach(sfile ${CONV_SOURCES})
|
foreach(sfile ${CONV_SOURCES})
|
||||||
|
@ -578,7 +578,7 @@ Array vim_get_api_info(uint64_t channel_id)
|
|||||||
/// `emsg` instead of `msg` to print each line)
|
/// `emsg` instead of `msg` to print each line)
|
||||||
static void write_msg(String message, bool to_err)
|
static void write_msg(String message, bool to_err)
|
||||||
{
|
{
|
||||||
static int out_pos = 0, err_pos = 0;
|
static size_t out_pos = 0, err_pos = 0;
|
||||||
static char out_line_buf[LINE_BUFFER_SIZE], err_line_buf[LINE_BUFFER_SIZE];
|
static char out_line_buf[LINE_BUFFER_SIZE], err_line_buf[LINE_BUFFER_SIZE];
|
||||||
|
|
||||||
#define PUSH_CHAR(i, pos, line_buf, msg) \
|
#define PUSH_CHAR(i, pos, line_buf, msg) \
|
||||||
|
@ -1582,7 +1582,7 @@ static int diff_cmp(char_u *s1, char_u *s2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((diff_flags & DIFF_ICASE) && !(diff_flags & DIFF_IWHITE)) {
|
if ((diff_flags & DIFF_ICASE) && !(diff_flags & DIFF_IWHITE)) {
|
||||||
return MB_STRICMP(s1, s2);
|
return mb_stricmp(s1, s2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ignore white space changes and possibly ignore case.
|
// Ignore white space changes and possibly ignore case.
|
||||||
|
@ -1532,7 +1532,9 @@ static int getexactdigraph(int char1, int char2, int meta_char)
|
|||||||
|
|
||||||
if (convert_setup(&vc, (char_u *)"utf-8", p_enc) == OK) {
|
if (convert_setup(&vc, (char_u *)"utf-8", p_enc) == OK) {
|
||||||
vc.vc_fail = true;
|
vc.vc_fail = true;
|
||||||
to = string_convert(&vc, buf, &i);
|
assert(i >= 0);
|
||||||
|
size_t len = (size_t)i;
|
||||||
|
to = string_convert(&vc, buf, &len);
|
||||||
|
|
||||||
if (to != NULL) {
|
if (to != NULL) {
|
||||||
retval = (*mb_ptr2char)(to);
|
retval = (*mb_ptr2char)(to);
|
||||||
|
@ -6594,9 +6594,10 @@ int in_cinkeys(int keytyped, int when, int line_is_empty)
|
|||||||
for (s = line + curwin->w_cursor.col; s > line; --s)
|
for (s = line + curwin->w_cursor.col; s > line; --s)
|
||||||
if (!vim_iswordc(s[-1]))
|
if (!vim_iswordc(s[-1]))
|
||||||
break;
|
break;
|
||||||
|
assert(p >= look && (uintmax_t)(p - look) <= SIZE_MAX);
|
||||||
if (s + (p - look) <= line + curwin->w_cursor.col
|
if (s + (p - look) <= line + curwin->w_cursor.col
|
||||||
&& (icase
|
&& (icase
|
||||||
? MB_STRNICMP(s, look, p - look)
|
? mb_strnicmp(s, look, (size_t)(p - look))
|
||||||
: STRNCMP(s, look, p - look)) == 0)
|
: STRNCMP(s, look, p - look)) == 0)
|
||||||
match = TRUE;
|
match = TRUE;
|
||||||
} else
|
} else
|
||||||
@ -6605,10 +6606,11 @@ int in_cinkeys(int keytyped, int when, int line_is_empty)
|
|||||||
&& TOLOWER_LOC(keytyped) ==
|
&& TOLOWER_LOC(keytyped) ==
|
||||||
TOLOWER_LOC((int)p[-1]))) {
|
TOLOWER_LOC((int)p[-1]))) {
|
||||||
line = get_cursor_pos_ptr();
|
line = get_cursor_pos_ptr();
|
||||||
|
assert(p >= look && (uintmax_t)(p - look) <= SIZE_MAX);
|
||||||
if ((curwin->w_cursor.col == (colnr_T)(p - look)
|
if ((curwin->w_cursor.col == (colnr_T)(p - look)
|
||||||
|| !vim_iswordc(line[-(p - look) - 1]))
|
|| !vim_iswordc(line[-(p - look) - 1]))
|
||||||
&& (icase
|
&& (icase
|
||||||
? MB_STRNICMP(line - (p - look), look, p - look)
|
? mb_strnicmp(line - (p - look), look, (size_t)(p - look))
|
||||||
: STRNCMP(line - (p - look), look, p - look))
|
: STRNCMP(line - (p - look), look, p - look))
|
||||||
== 0)
|
== 0)
|
||||||
match = TRUE;
|
match = TRUE;
|
||||||
|
@ -3615,7 +3615,7 @@ static int eval4(char_u **arg, typval_T *rettv, int evaluate)
|
|||||||
s1 = get_tv_string_buf(rettv, buf1);
|
s1 = get_tv_string_buf(rettv, buf1);
|
||||||
s2 = get_tv_string_buf(&var2, buf2);
|
s2 = get_tv_string_buf(&var2, buf2);
|
||||||
if (type != TYPE_MATCH && type != TYPE_NOMATCH)
|
if (type != TYPE_MATCH && type != TYPE_NOMATCH)
|
||||||
i = ic ? MB_STRICMP(s1, s2) : STRCMP(s1, s2);
|
i = ic ? mb_stricmp(s1, s2) : STRCMP(s1, s2);
|
||||||
else
|
else
|
||||||
i = 0;
|
i = 0;
|
||||||
n1 = FALSE;
|
n1 = FALSE;
|
||||||
@ -4955,7 +4955,7 @@ tv_equal (
|
|||||||
case VAR_STRING:
|
case VAR_STRING:
|
||||||
s1 = get_tv_string_buf(tv1, buf1);
|
s1 = get_tv_string_buf(tv1, buf1);
|
||||||
s2 = get_tv_string_buf(tv2, buf2);
|
s2 = get_tv_string_buf(tv2, buf2);
|
||||||
return (ic ? MB_STRICMP(s1, s2) : STRCMP(s1, s2)) == 0;
|
return (ic ? mb_stricmp(s1, s2) : STRCMP(s1, s2)) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
EMSG2(_(e_intern2), "tv_equal()");
|
EMSG2(_(e_intern2), "tv_equal()");
|
||||||
|
@ -5257,8 +5257,7 @@ void fix_help_buffer(void)
|
|||||||
else {
|
else {
|
||||||
/* Do the conversion. If it fails
|
/* Do the conversion. If it fails
|
||||||
* use the unconverted text. */
|
* use the unconverted text. */
|
||||||
cp = string_convert(&vc, IObuff,
|
cp = string_convert(&vc, IObuff, NULL);
|
||||||
NULL);
|
|
||||||
if (cp == NULL)
|
if (cp == NULL)
|
||||||
cp = IObuff;
|
cp = IObuff;
|
||||||
}
|
}
|
||||||
|
@ -1235,7 +1235,6 @@ retry:
|
|||||||
if (size <= 0)
|
if (size <= 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
# ifdef USE_ICONV
|
# ifdef USE_ICONV
|
||||||
if (iconv_fd != (iconv_t)-1) {
|
if (iconv_fd != (iconv_t)-1) {
|
||||||
/*
|
/*
|
||||||
@ -1294,16 +1293,6 @@ retry:
|
|||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# ifdef MACOS_CONVERT
|
|
||||||
if (fio_flags & FIO_MACROMAN) {
|
|
||||||
/*
|
|
||||||
* Conversion from Apple MacRoman char encoding to UTF-8 or
|
|
||||||
* latin1. This is in os_mac_conv.c.
|
|
||||||
*/
|
|
||||||
if (macroman2enc(ptr, &size, real_size) == FAIL)
|
|
||||||
goto rewind_retry;
|
|
||||||
} else
|
|
||||||
# endif
|
|
||||||
if (fio_flags != 0) {
|
if (fio_flags != 0) {
|
||||||
int u8c;
|
int u8c;
|
||||||
char_u *dest;
|
char_u *dest;
|
||||||
@ -4029,38 +4018,6 @@ static int buf_write_bytes(struct bw_info *ip)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# ifdef MACOS_CONVERT
|
|
||||||
else if (flags & FIO_MACROMAN) {
|
|
||||||
/*
|
|
||||||
* Convert UTF-8 or latin1 to Apple MacRoman.
|
|
||||||
*/
|
|
||||||
char_u *from;
|
|
||||||
size_t fromlen;
|
|
||||||
|
|
||||||
if (ip->bw_restlen > 0) {
|
|
||||||
/* Need to concatenate the remainder of the previous call and
|
|
||||||
* the bytes of the current call. Use the end of the
|
|
||||||
* conversion buffer for this. */
|
|
||||||
fromlen = len + ip->bw_restlen;
|
|
||||||
from = ip->bw_conv_buf + ip->bw_conv_buflen - fromlen;
|
|
||||||
memmove(from, ip->bw_rest, (size_t)ip->bw_restlen);
|
|
||||||
memmove(from + ip->bw_restlen, buf, (size_t)len);
|
|
||||||
} else {
|
|
||||||
from = buf;
|
|
||||||
fromlen = len;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (enc2macroman(from, fromlen,
|
|
||||||
ip->bw_conv_buf, &len, ip->bw_conv_buflen,
|
|
||||||
ip->bw_rest, &ip->bw_restlen) == FAIL) {
|
|
||||||
ip->bw_conv_error = TRUE;
|
|
||||||
return FAIL;
|
|
||||||
}
|
|
||||||
buf = ip->bw_conv_buf;
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# ifdef USE_ICONV
|
# ifdef USE_ICONV
|
||||||
if (ip->bw_iconv_fd != (iconv_t)-1) {
|
if (ip->bw_iconv_fd != (iconv_t)-1) {
|
||||||
const char *from;
|
const char *from;
|
||||||
|
@ -96,7 +96,7 @@
|
|||||||
* Sets the current position at the start of line "page_line".
|
* Sets the current position at the start of line "page_line".
|
||||||
* If margin is TRUE start in the left margin (for header and line number).
|
* If margin is TRUE start in the left margin (for header and line number).
|
||||||
*
|
*
|
||||||
* int mch_print_text_out(char_u *p, int len);
|
* int mch_print_text_out(char_u *p, size_t len);
|
||||||
* Output one character of text p[len] at the current position.
|
* Output one character of text p[len] at the current position.
|
||||||
* Return TRUE if there is no room for another character in the same line.
|
* Return TRUE if there is no room for another character in the same line.
|
||||||
*
|
*
|
||||||
@ -495,7 +495,6 @@ static void prt_header(prt_settings_T *psettings, int pagenum, linenr_T lnum)
|
|||||||
int page_line;
|
int page_line;
|
||||||
char_u *tbuf;
|
char_u *tbuf;
|
||||||
char_u *p;
|
char_u *p;
|
||||||
int l;
|
|
||||||
|
|
||||||
/* Also use the space for the line number. */
|
/* Also use the space for the line number. */
|
||||||
if (prt_use_number())
|
if (prt_use_number())
|
||||||
@ -542,9 +541,9 @@ static void prt_header(prt_settings_T *psettings, int pagenum, linenr_T lnum)
|
|||||||
page_line = 0 - prt_header_height();
|
page_line = 0 - prt_header_height();
|
||||||
mch_print_start_line(TRUE, page_line);
|
mch_print_start_line(TRUE, page_line);
|
||||||
for (p = tbuf; *p != NUL; ) {
|
for (p = tbuf; *p != NUL; ) {
|
||||||
if (mch_print_text_out(p,
|
int l = (*mb_ptr2len)(p);
|
||||||
(l = (*mb_ptr2len)(p))
|
assert(l >= 0);
|
||||||
)) {
|
if (mch_print_text_out(p, (size_t)l)) {
|
||||||
++page_line;
|
++page_line;
|
||||||
if (page_line >= 0) /* out of room in header */
|
if (page_line >= 0) /* out of room in header */
|
||||||
break;
|
break;
|
||||||
@ -884,7 +883,7 @@ static colnr_T hardcopy_line(prt_settings_T *psettings, int page_line, prt_pos_T
|
|||||||
ppos->ff = TRUE;
|
ppos->ff = TRUE;
|
||||||
need_break = 1;
|
need_break = 1;
|
||||||
} else {
|
} else {
|
||||||
need_break = mch_print_text_out(line + col, outputlen);
|
need_break = mch_print_text_out(line + col, (size_t)outputlen);
|
||||||
if (has_mbyte)
|
if (has_mbyte)
|
||||||
print_pos += (*mb_ptr2cells)(line + col);
|
print_pos += (*mb_ptr2cells)(line + col);
|
||||||
else
|
else
|
||||||
@ -2871,7 +2870,7 @@ void mch_print_start_line(int margin, int page_line)
|
|||||||
prt_half_width = FALSE;
|
prt_half_width = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mch_print_text_out(char_u *p, int len)
|
int mch_print_text_out(char_u *p, size_t len)
|
||||||
{
|
{
|
||||||
int need_break;
|
int need_break;
|
||||||
char_u ch;
|
char_u ch;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#include <assert.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
@ -198,7 +199,8 @@ int set_indent(int size, int flags)
|
|||||||
// characters and allocate accordingly. We will fill the rest with spaces
|
// characters and allocate accordingly. We will fill the rest with spaces
|
||||||
// after the if (!curbuf->b_p_et) below.
|
// after the if (!curbuf->b_p_et) below.
|
||||||
if (orig_char_len != -1) {
|
if (orig_char_len != -1) {
|
||||||
newline = xmalloc(orig_char_len + size - ind_done + line_len);
|
assert(orig_char_len + size - ind_done + line_len >= 0);
|
||||||
|
newline = xmalloc((size_t)(orig_char_len + size - ind_done + line_len));
|
||||||
todo = size - ind_done;
|
todo = size - ind_done;
|
||||||
|
|
||||||
// Set total length of indent in characters, which may have been
|
// Set total length of indent in characters, which may have been
|
||||||
@ -219,7 +221,8 @@ int set_indent(int size, int flags)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
todo = size;
|
todo = size;
|
||||||
newline = xmalloc(ind_len + line_len);
|
assert(ind_len + line_len >= 0);
|
||||||
|
newline = xmalloc((size_t)(ind_len + line_len));
|
||||||
s = newline;
|
s = newline;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -384,7 +387,8 @@ int copy_indent(int size, char_u *src)
|
|||||||
// Allocate memory for the result: the copied indent, new indent
|
// Allocate memory for the result: the copied indent, new indent
|
||||||
// and the rest of the line.
|
// and the rest of the line.
|
||||||
line_len = (int)STRLEN(get_cursor_line_ptr()) + 1;
|
line_len = (int)STRLEN(get_cursor_line_ptr()) + 1;
|
||||||
line = xmalloc(ind_len + line_len);
|
assert(ind_len + line_len >= 0);
|
||||||
|
line = xmalloc((size_t)(ind_len + line_len));
|
||||||
p = line;
|
p = line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -449,7 +453,7 @@ int get_number_indent(linenr_T lnum)
|
|||||||
*/
|
*/
|
||||||
int get_breakindent_win(win_T *wp, char_u *line) {
|
int get_breakindent_win(win_T *wp, char_u *line) {
|
||||||
static int prev_indent = 0; /* cached indent value */
|
static int prev_indent = 0; /* cached indent value */
|
||||||
static int prev_ts = 0L; /* cached tabstop value */
|
static long prev_ts = 0; /* cached tabstop value */
|
||||||
static char_u *prev_line = NULL; /* cached pointer to line */
|
static char_u *prev_line = NULL; /* cached pointer to line */
|
||||||
static int prev_tick = 0; // changedtick of cached value
|
static int prev_tick = 0; // changedtick of cached value
|
||||||
int bri = 0;
|
int bri = 0;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
* special key codes.
|
* special key codes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
#include "nvim/vim.h"
|
#include "nvim/vim.h"
|
||||||
@ -457,7 +458,7 @@ char_u *get_special_key_name(int c, int modifiers)
|
|||||||
if (IS_SPECIAL(c)) {
|
if (IS_SPECIAL(c)) {
|
||||||
string[idx++] = 't';
|
string[idx++] = 't';
|
||||||
string[idx++] = '_';
|
string[idx++] = '_';
|
||||||
string[idx++] = KEY2TERMCAP0(c);
|
string[idx++] = (char_u)KEY2TERMCAP0(c);
|
||||||
string[idx++] = KEY2TERMCAP1(c);
|
string[idx++] = KEY2TERMCAP1(c);
|
||||||
}
|
}
|
||||||
/* Not a special key, only modifiers, output directly */
|
/* Not a special key, only modifiers, output directly */
|
||||||
@ -465,7 +466,7 @@ char_u *get_special_key_name(int c, int modifiers)
|
|||||||
if (has_mbyte && (*mb_char2len)(c) > 1)
|
if (has_mbyte && (*mb_char2len)(c) > 1)
|
||||||
idx += (*mb_char2bytes)(c, string + idx);
|
idx += (*mb_char2bytes)(c, string + idx);
|
||||||
else if (vim_isprintc(c))
|
else if (vim_isprintc(c))
|
||||||
string[idx++] = c;
|
string[idx++] = (char_u)c;
|
||||||
else {
|
else {
|
||||||
s = transchar(c);
|
s = transchar(c);
|
||||||
while (*s)
|
while (*s)
|
||||||
@ -496,7 +497,7 @@ trans_special (
|
|||||||
{
|
{
|
||||||
int modifiers = 0;
|
int modifiers = 0;
|
||||||
int key;
|
int key;
|
||||||
int dlen = 0;
|
unsigned int dlen = 0;
|
||||||
|
|
||||||
key = find_special_key(srcp, &modifiers, keycode, FALSE);
|
key = find_special_key(srcp, &modifiers, keycode, FALSE);
|
||||||
if (key == 0)
|
if (key == 0)
|
||||||
@ -506,19 +507,22 @@ trans_special (
|
|||||||
if (modifiers != 0) {
|
if (modifiers != 0) {
|
||||||
dst[dlen++] = K_SPECIAL;
|
dst[dlen++] = K_SPECIAL;
|
||||||
dst[dlen++] = KS_MODIFIER;
|
dst[dlen++] = KS_MODIFIER;
|
||||||
dst[dlen++] = modifiers;
|
dst[dlen++] = (char_u)modifiers;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_SPECIAL(key)) {
|
if (IS_SPECIAL(key)) {
|
||||||
dst[dlen++] = K_SPECIAL;
|
dst[dlen++] = K_SPECIAL;
|
||||||
dst[dlen++] = KEY2TERMCAP0(key);
|
dst[dlen++] = (char_u)KEY2TERMCAP0(key);
|
||||||
dst[dlen++] = KEY2TERMCAP1(key);
|
dst[dlen++] = KEY2TERMCAP1(key);
|
||||||
} else if (has_mbyte && !keycode)
|
} else if (has_mbyte && !keycode)
|
||||||
dlen += (*mb_char2bytes)(key, dst + dlen);
|
dlen += (unsigned int)(*mb_char2bytes)(key, dst + dlen);
|
||||||
else if (keycode)
|
else if (keycode) {
|
||||||
dlen = (int)(add_char2buf(key, dst + dlen) - dst);
|
char_u *after = add_char2buf(key, dst + dlen);
|
||||||
|
assert(after >= dst && (uintmax_t)(after - dst) <= UINT_MAX);
|
||||||
|
dlen = (unsigned int)(after - dst);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
dst[dlen++] = key;
|
dst[dlen++] = (char_u)key;
|
||||||
|
|
||||||
return dlen;
|
return dlen;
|
||||||
}
|
}
|
||||||
|
@ -604,7 +604,8 @@ static char_u *mark_line(pos_T *mp, int lead_len)
|
|||||||
|
|
||||||
if (mp->lnum == 0 || mp->lnum > curbuf->b_ml.ml_line_count)
|
if (mp->lnum == 0 || mp->lnum > curbuf->b_ml.ml_line_count)
|
||||||
return vim_strsave((char_u *)"-invalid-");
|
return vim_strsave((char_u *)"-invalid-");
|
||||||
s = vim_strnsave(skipwhite(ml_get(mp->lnum)), (int)Columns);
|
assert(Columns >= 0 && (size_t)Columns <= SIZE_MAX);
|
||||||
|
s = vim_strnsave(skipwhite(ml_get(mp->lnum)), (size_t)Columns);
|
||||||
|
|
||||||
/* Truncate the line to fit it in the window */
|
/* Truncate the line to fit it in the window */
|
||||||
len = 0;
|
len = 0;
|
||||||
@ -1033,10 +1034,11 @@ void mark_adjust(linenr_T line1, linenr_T line2, long amount, long amount_after)
|
|||||||
if (posp->lnum == lnum && posp->col >= mincol) \
|
if (posp->lnum == lnum && posp->col >= mincol) \
|
||||||
{ \
|
{ \
|
||||||
posp->lnum += lnum_amount; \
|
posp->lnum += lnum_amount; \
|
||||||
|
assert(col_amount > INT_MIN && col_amount <= INT_MAX); \
|
||||||
if (col_amount < 0 && posp->col <= (colnr_T)-col_amount) \
|
if (col_amount < 0 && posp->col <= (colnr_T)-col_amount) \
|
||||||
posp->col = 0; \
|
posp->col = 0; \
|
||||||
else \
|
else \
|
||||||
posp->col += col_amount; \
|
posp->col += (colnr_T)col_amount; \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1329,7 +1331,7 @@ int removable(char_u *name)
|
|||||||
copy_option_part(&p, part, 51, ", ");
|
copy_option_part(&p, part, 51, ", ");
|
||||||
if (part[0] == 'r') {
|
if (part[0] == 'r') {
|
||||||
n = STRLEN(part + 1);
|
n = STRLEN(part + 1);
|
||||||
if (MB_STRNICMP(part + 1, name, n) == 0) {
|
if (mb_strnicmp(part + 1, name, n) == 0) {
|
||||||
retval = TRUE;
|
retval = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1499,12 +1501,13 @@ void copy_viminfo_marks(vir_T *virp, FILE *fp_out, int count, int eof, int flags
|
|||||||
if (load_marks) {
|
if (load_marks) {
|
||||||
if (line[1] != NUL) {
|
if (line[1] != NUL) {
|
||||||
int64_t lnum_64;
|
int64_t lnum_64;
|
||||||
unsigned u;
|
unsigned int u;
|
||||||
sscanf((char *)line + 2, "%" SCNd64 "%u", &lnum_64, &u);
|
sscanf((char *)line + 2, "%" SCNd64 "%u", &lnum_64, &u);
|
||||||
// safely downcast to linenr_T (long); remove when linenr_T refactored
|
// safely downcast to linenr_T (long); remove when linenr_T refactored
|
||||||
assert(lnum_64 <= LONG_MAX);
|
assert(lnum_64 <= LONG_MAX);
|
||||||
pos.lnum = (linenr_T)lnum_64;
|
pos.lnum = (linenr_T)lnum_64;
|
||||||
pos.col = u;
|
assert(u <= INT_MAX);
|
||||||
|
pos.col = (colnr_T)u;
|
||||||
switch (line[1]) {
|
switch (line[1]) {
|
||||||
case '"': curbuf->b_last_cursor = pos; break;
|
case '"': curbuf->b_last_cursor = pos; break;
|
||||||
case '^': curbuf->b_last_insert = pos; break;
|
case '^': curbuf->b_last_insert = pos; break;
|
||||||
|
@ -143,7 +143,7 @@ static char utf8len_tab[256] =
|
|||||||
/*
|
/*
|
||||||
* Like utf8len_tab above, but using a zero for illegal lead bytes.
|
* Like utf8len_tab above, but using a zero for illegal lead bytes.
|
||||||
*/
|
*/
|
||||||
static char utf8len_tab_zero[256] =
|
static uint8_t utf8len_tab_zero[256] =
|
||||||
{
|
{
|
||||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||||
@ -1375,7 +1375,7 @@ static int dbcs_ptr2char(const char_u *p)
|
|||||||
*/
|
*/
|
||||||
int utf_ptr2char(const char_u *p)
|
int utf_ptr2char(const char_u *p)
|
||||||
{
|
{
|
||||||
int len;
|
uint8_t len;
|
||||||
|
|
||||||
if (p[0] < 0x80) /* be quick for ASCII */
|
if (p[0] < 0x80) /* be quick for ASCII */
|
||||||
return p[0];
|
return p[0];
|
||||||
@ -1427,12 +1427,12 @@ int utf_ptr2char(const char_u *p)
|
|||||||
*/
|
*/
|
||||||
static int utf_safe_read_char_adv(char_u **s, size_t *n)
|
static int utf_safe_read_char_adv(char_u **s, size_t *n)
|
||||||
{
|
{
|
||||||
int c, k;
|
int c;
|
||||||
|
|
||||||
if (*n == 0) /* end of buffer */
|
if (*n == 0) /* end of buffer */
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
k = utf8len_tab_zero[**s];
|
uint8_t k = utf8len_tab_zero[**s];
|
||||||
|
|
||||||
if (k == 1) {
|
if (k == 1) {
|
||||||
/* ASCII character or NUL */
|
/* ASCII character or NUL */
|
||||||
@ -1440,7 +1440,7 @@ static int utf_safe_read_char_adv(char_u **s, size_t *n)
|
|||||||
return *(*s)++;
|
return *(*s)++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((size_t)k <= *n) {
|
if (k <= *n) {
|
||||||
/* We have a multibyte sequence and it isn't truncated by buffer
|
/* We have a multibyte sequence and it isn't truncated by buffer
|
||||||
* limits so utf_ptr2char() is safe to use. Or the first byte is
|
* limits so utf_ptr2char() is safe to use. Or the first byte is
|
||||||
* illegal (k=0), and it's also safe to use utf_ptr2char(). */
|
* illegal (k=0), and it's also safe to use utf_ptr2char(). */
|
||||||
@ -2839,6 +2839,16 @@ int mb_strnicmp(char_u *s1, char_u *s2, size_t nn)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We need to call mb_stricmp() even when we aren't dealing with a multi-byte
|
||||||
|
* encoding because mb_stricmp() takes care of all ascii and non-ascii
|
||||||
|
* encodings, including characters with umlauts in latin1, etc., while
|
||||||
|
* STRICMP() only handles the system locale version, which often does not
|
||||||
|
* handle non-ascii properly. */
|
||||||
|
int mb_stricmp(char_u *s1, char_u *s2)
|
||||||
|
{
|
||||||
|
return mb_strnicmp(s1, s2, MAXCOL);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "g8": show bytes of the UTF-8 char under the cursor. Doesn't matter what
|
* "g8": show bytes of the UTF-8 char under the cursor. Doesn't matter what
|
||||||
* 'encoding' has been set to.
|
* 'encoding' has been set to.
|
||||||
@ -3504,7 +3514,8 @@ void * my_iconv_open(char_u *to, char_u *from)
|
|||||||
* Returns the converted string in allocated memory. NULL for an error.
|
* Returns the converted string in allocated memory. NULL for an error.
|
||||||
* If resultlenp is not NULL, sets it to the result length in bytes.
|
* If resultlenp is not NULL, sets it to the result length in bytes.
|
||||||
*/
|
*/
|
||||||
static char_u * iconv_string(vimconv_T *vcp, char_u *str, int slen, int *unconvlenp, int *resultlenp)
|
static char_u * iconv_string(vimconv_T *vcp, char_u *str, size_t slen,
|
||||||
|
size_t *unconvlenp, size_t *resultlenp)
|
||||||
{
|
{
|
||||||
const char *from;
|
const char *from;
|
||||||
size_t fromlen;
|
size_t fromlen;
|
||||||
@ -3534,8 +3545,7 @@ static char_u * iconv_string(vimconv_T *vcp, char_u *str, int slen, int *unconvl
|
|||||||
tolen = len - done - 2;
|
tolen = len - done - 2;
|
||||||
/* Avoid a warning for systems with a wrong iconv() prototype by
|
/* Avoid a warning for systems with a wrong iconv() prototype by
|
||||||
* casting the second argument to void *. */
|
* casting the second argument to void *. */
|
||||||
if (iconv(vcp->vc_fd, (void *)&from, &fromlen, &to, &tolen)
|
if (iconv(vcp->vc_fd, (void *)&from, &fromlen, &to, &tolen) != SIZE_MAX) {
|
||||||
!= (size_t)-1) {
|
|
||||||
/* Finished, append a NUL. */
|
/* Finished, append a NUL. */
|
||||||
*to = NUL;
|
*to = NUL;
|
||||||
break;
|
break;
|
||||||
@ -3547,7 +3557,7 @@ static char_u * iconv_string(vimconv_T *vcp, char_u *str, int slen, int *unconvl
|
|||||||
&& (ICONV_ERRNO == ICONV_EINVAL || ICONV_ERRNO == EINVAL)) {
|
&& (ICONV_ERRNO == ICONV_EINVAL || ICONV_ERRNO == EINVAL)) {
|
||||||
/* Handle an incomplete sequence at the end. */
|
/* Handle an incomplete sequence at the end. */
|
||||||
*to = NUL;
|
*to = NUL;
|
||||||
*unconvlenp = (int)fromlen;
|
*unconvlenp = fromlen;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* Check both ICONV_EILSEQ and EILSEQ, because the dynamically loaded
|
/* Check both ICONV_EILSEQ and EILSEQ, because the dynamically loaded
|
||||||
@ -3581,7 +3591,7 @@ static char_u * iconv_string(vimconv_T *vcp, char_u *str, int slen, int *unconvl
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (resultlenp != NULL && result != NULL)
|
if (resultlenp != NULL && result != NULL)
|
||||||
*resultlenp = (int)(to - (char *)result);
|
*resultlenp = (size_t)(to - (char *)result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3802,7 +3812,7 @@ int convert_setup_ext(vimconv_T *vcp, char_u *from, bool from_unicode_is_utf8,
|
|||||||
* Illegal chars are often changed to "?", unless vcp->vc_fail is set.
|
* Illegal chars are often changed to "?", unless vcp->vc_fail is set.
|
||||||
* When something goes wrong, NULL is returned and "*lenp" is unchanged.
|
* When something goes wrong, NULL is returned and "*lenp" is unchanged.
|
||||||
*/
|
*/
|
||||||
char_u * string_convert(vimconv_T *vcp, char_u *ptr, int *lenp)
|
char_u * string_convert(vimconv_T *vcp, char_u *ptr, size_t *lenp)
|
||||||
{
|
{
|
||||||
return string_convert_ext(vcp, ptr, lenp, NULL);
|
return string_convert_ext(vcp, ptr, lenp, NULL);
|
||||||
}
|
}
|
||||||
@ -3812,18 +3822,17 @@ char_u * string_convert(vimconv_T *vcp, char_u *ptr, int *lenp)
|
|||||||
* an incomplete sequence at the end it is not converted and "*unconvlenp" is
|
* an incomplete sequence at the end it is not converted and "*unconvlenp" is
|
||||||
* set to the number of remaining bytes.
|
* set to the number of remaining bytes.
|
||||||
*/
|
*/
|
||||||
char_u * string_convert_ext(vimconv_T *vcp, char_u *ptr, int *lenp,
|
char_u * string_convert_ext(vimconv_T *vcp, char_u *ptr,
|
||||||
int *unconvlenp)
|
size_t *lenp, size_t *unconvlenp)
|
||||||
{
|
{
|
||||||
char_u *retval = NULL;
|
char_u *retval = NULL;
|
||||||
char_u *d;
|
char_u *d;
|
||||||
int len;
|
|
||||||
int i;
|
|
||||||
int l;
|
int l;
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
|
size_t len;
|
||||||
if (lenp == NULL)
|
if (lenp == NULL)
|
||||||
len = (int)STRLEN(ptr);
|
len = STRLEN(ptr);
|
||||||
else
|
else
|
||||||
len = *lenp;
|
len = *lenp;
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
@ -3833,7 +3842,7 @@ char_u * string_convert_ext(vimconv_T *vcp, char_u *ptr, int *lenp,
|
|||||||
case CONV_TO_UTF8: /* latin1 to utf-8 conversion */
|
case CONV_TO_UTF8: /* latin1 to utf-8 conversion */
|
||||||
retval = xmalloc(len * 2 + 1);
|
retval = xmalloc(len * 2 + 1);
|
||||||
d = retval;
|
d = retval;
|
||||||
for (i = 0; i < len; ++i) {
|
for (size_t i = 0; i < len; ++i) {
|
||||||
c = ptr[i];
|
c = ptr[i];
|
||||||
if (c < 0x80)
|
if (c < 0x80)
|
||||||
*d++ = c;
|
*d++ = c;
|
||||||
@ -3844,13 +3853,13 @@ char_u * string_convert_ext(vimconv_T *vcp, char_u *ptr, int *lenp,
|
|||||||
}
|
}
|
||||||
*d = NUL;
|
*d = NUL;
|
||||||
if (lenp != NULL)
|
if (lenp != NULL)
|
||||||
*lenp = (int)(d - retval);
|
*lenp = (size_t)(d - retval);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CONV_9_TO_UTF8: /* latin9 to utf-8 conversion */
|
case CONV_9_TO_UTF8: /* latin9 to utf-8 conversion */
|
||||||
retval = xmalloc(len * 3 + 1);
|
retval = xmalloc(len * 3 + 1);
|
||||||
d = retval;
|
d = retval;
|
||||||
for (i = 0; i < len; ++i) {
|
for (size_t i = 0; i < len; ++i) {
|
||||||
c = ptr[i];
|
c = ptr[i];
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 0xa4: c = 0x20ac; break; /* euro */
|
case 0xa4: c = 0x20ac; break; /* euro */
|
||||||
@ -3866,19 +3875,19 @@ char_u * string_convert_ext(vimconv_T *vcp, char_u *ptr, int *lenp,
|
|||||||
}
|
}
|
||||||
*d = NUL;
|
*d = NUL;
|
||||||
if (lenp != NULL)
|
if (lenp != NULL)
|
||||||
*lenp = (int)(d - retval);
|
*lenp = (size_t)(d - retval);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CONV_TO_LATIN1: /* utf-8 to latin1 conversion */
|
case CONV_TO_LATIN1: /* utf-8 to latin1 conversion */
|
||||||
case CONV_TO_LATIN9: /* utf-8 to latin9 conversion */
|
case CONV_TO_LATIN9: /* utf-8 to latin9 conversion */
|
||||||
retval = xmalloc(len + 1);
|
retval = xmalloc(len + 1);
|
||||||
d = retval;
|
d = retval;
|
||||||
for (i = 0; i < len; ++i) {
|
for (size_t i = 0; i < len; ++i) {
|
||||||
l = utf_ptr2len_len(ptr + i, len - i);
|
l = utf_ptr2len_len(ptr + i, len - i);
|
||||||
if (l == 0)
|
if (l == 0)
|
||||||
*d++ = NUL;
|
*d++ = NUL;
|
||||||
else if (l == 1) {
|
else if (l == 1) {
|
||||||
int l_w = utf8len_tab_zero[ptr[i]];
|
uint8_t l_w = utf8len_tab_zero[ptr[i]];
|
||||||
|
|
||||||
if (l_w == 0) {
|
if (l_w == 0) {
|
||||||
/* Illegal utf-8 byte cannot be converted */
|
/* Illegal utf-8 byte cannot be converted */
|
||||||
@ -3929,31 +3938,9 @@ char_u * string_convert_ext(vimconv_T *vcp, char_u *ptr, int *lenp,
|
|||||||
}
|
}
|
||||||
*d = NUL;
|
*d = NUL;
|
||||||
if (lenp != NULL)
|
if (lenp != NULL)
|
||||||
*lenp = (int)(d - retval);
|
*lenp = (size_t)(d - retval);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
# ifdef MACOS_CONVERT
|
|
||||||
case CONV_MAC_LATIN1:
|
|
||||||
retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
|
|
||||||
'm', 'l', unconvlenp);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CONV_LATIN1_MAC:
|
|
||||||
retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
|
|
||||||
'l', 'm', unconvlenp);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CONV_MAC_UTF8:
|
|
||||||
retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
|
|
||||||
'm', 'u', unconvlenp);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CONV_UTF8_MAC:
|
|
||||||
retval = mac_string_convert(ptr, len, lenp, vcp->vc_fail,
|
|
||||||
'u', 'm', unconvlenp);
|
|
||||||
break;
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# ifdef USE_ICONV
|
# ifdef USE_ICONV
|
||||||
case CONV_ICONV: /* conversion with output_conv.vc_fd */
|
case CONV_ICONV: /* conversion with output_conv.vc_fd */
|
||||||
retval = iconv_string(vcp, ptr, len, unconvlenp, lenp);
|
retval = iconv_string(vcp, ptr, len, unconvlenp, lenp);
|
||||||
|
@ -2059,12 +2059,6 @@ void set_init_1(void)
|
|||||||
/* Parse default for 'fillchars'. */
|
/* Parse default for 'fillchars'. */
|
||||||
(void)set_chars_option(&p_fcs);
|
(void)set_chars_option(&p_fcs);
|
||||||
|
|
||||||
|
|
||||||
# ifdef MACOS_CONVERT
|
|
||||||
/* Moved to os_mac_conv.c to avoid dependency problems. */
|
|
||||||
mac_lang_init();
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* enc_locale() will try to find the encoding of the current locale. */
|
/* enc_locale() will try to find the encoding of the current locale. */
|
||||||
p = enc_locale();
|
p = enc_locale();
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
|
@ -415,10 +415,6 @@ void mch_exit(int r)
|
|||||||
out_flush();
|
out_flush();
|
||||||
ml_close_all(TRUE); /* remove all memfiles */
|
ml_close_all(TRUE); /* remove all memfiles */
|
||||||
|
|
||||||
#ifdef MACOS_CONVERT
|
|
||||||
mac_conv_cleanup();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
event_teardown();
|
event_teardown();
|
||||||
|
|
||||||
#ifdef EXITFREE
|
#ifdef EXITFREE
|
||||||
@ -734,7 +730,10 @@ int mch_expand_wildcards(int num_pat, char_u **pat, int *num_file,
|
|||||||
{
|
{
|
||||||
redraw_later_clear(); /* probably messed up screen */
|
redraw_later_clear(); /* probably messed up screen */
|
||||||
msg_putchar('\n'); /* clear bottom line quickly */
|
msg_putchar('\n'); /* clear bottom line quickly */
|
||||||
cmdline_row = Rows - 1; /* continue on last line */
|
#if SIZEOF_LONG > SIZEOF_INT
|
||||||
|
assert(Rows <= (long)INT_MAX + 1);
|
||||||
|
#endif
|
||||||
|
cmdline_row = (int)(Rows - 1); /* continue on last line */
|
||||||
MSG(_(e_wildexpand));
|
MSG(_(e_wildexpand));
|
||||||
msg_start(); /* don't overwrite this message */
|
msg_start(); /* don't overwrite this message */
|
||||||
}
|
}
|
||||||
@ -862,7 +861,7 @@ int mch_expand_wildcards(int num_pat, char_u **pat, int *num_file,
|
|||||||
goto notfound;
|
goto notfound;
|
||||||
}
|
}
|
||||||
*num_file = i;
|
*num_file = i;
|
||||||
*file = (char_u **)xmalloc(sizeof(char_u *) * i);
|
*file = xmalloc(sizeof(char_u *) * (size_t)i);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Isolate the individual file names.
|
* Isolate the individual file names.
|
||||||
|
@ -297,7 +297,7 @@ int vim_fnamecmp(char_u *x, char_u *y)
|
|||||||
return vim_fnamencmp(x, y, MAXPATHL);
|
return vim_fnamencmp(x, y, MAXPATHL);
|
||||||
#else
|
#else
|
||||||
if (p_fic)
|
if (p_fic)
|
||||||
return MB_STRICMP(x, y);
|
return mb_stricmp(x, y);
|
||||||
return STRCMP(x, y);
|
return STRCMP(x, y);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -327,7 +327,7 @@ int vim_fnamencmp(char_u *x, char_u *y, size_t len)
|
|||||||
return cx - cy;
|
return cx - cy;
|
||||||
#else
|
#else
|
||||||
if (p_fic)
|
if (p_fic)
|
||||||
return MB_STRNICMP(x, y, len);
|
return mb_strnicmp(x, y, len);
|
||||||
return STRNCMP(x, y, len);
|
return STRNCMP(x, y, len);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -578,16 +578,6 @@ unix_expandpath (
|
|||||||
if (*path_end != NUL)
|
if (*path_end != NUL)
|
||||||
backslash_halve(buf + len + 1);
|
backslash_halve(buf + len + 1);
|
||||||
if (os_file_exists(buf)) { /* add existing file */
|
if (os_file_exists(buf)) { /* add existing file */
|
||||||
#ifdef MACOS_CONVERT
|
|
||||||
size_t precomp_len = STRLEN(buf)+1;
|
|
||||||
char_u *precomp_buf =
|
|
||||||
mac_precompose_path(buf, precomp_len, &precomp_len);
|
|
||||||
|
|
||||||
if (precomp_buf) {
|
|
||||||
memmove(buf, precomp_buf, precomp_len);
|
|
||||||
free(precomp_buf);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
addfile(gap, buf, flags);
|
addfile(gap, buf, flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
typedef long linenr_T; // line number type
|
typedef long linenr_T; // line number type
|
||||||
typedef int colnr_T; // column number type
|
typedef int colnr_T; // column number type
|
||||||
|
|
||||||
#define MAXLNUM (0x7fffffffL) // maximum (invalid) line number
|
#define MAXLNUM 0x7fffffff // maximum (invalid) line number
|
||||||
#define MAXCOL (0x7fffffffL) // maximum column number, 31 bits
|
#define MAXCOL 0x7fffffff // maximum column number, 31 bits
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* position in file or buffer
|
* position in file or buffer
|
||||||
|
@ -6226,8 +6226,10 @@ static int cstrncmp(char_u *s1, char_u *s2, int *n)
|
|||||||
|
|
||||||
if (!ireg_ic)
|
if (!ireg_ic)
|
||||||
result = STRNCMP(s1, s2, *n);
|
result = STRNCMP(s1, s2, *n);
|
||||||
else
|
else {
|
||||||
result = MB_STRNICMP(s1, s2, *n);
|
assert(*n >= 0);
|
||||||
|
result = mb_strnicmp(s1, s2, (size_t)*n);
|
||||||
|
}
|
||||||
|
|
||||||
/* if it failed and it's utf8 and we want to combineignore: */
|
/* if it failed and it's utf8 and we want to combineignore: */
|
||||||
if (result != 0 && enc_utf8 && ireg_icombine) {
|
if (result != 0 && enc_utf8 && ireg_icombine) {
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
* search.c: code for normal mode searching commands
|
* search.c: code for normal mode searching commands
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
@ -1258,11 +1259,12 @@ int search_for_exact_line(buf_T *buf, pos_T *pos, int dir, char_u *pat)
|
|||||||
* ignored because we are interested in the next line -- Acevedo */
|
* ignored because we are interested in the next line -- Acevedo */
|
||||||
if ((compl_cont_status & CONT_ADDING)
|
if ((compl_cont_status & CONT_ADDING)
|
||||||
&& !(compl_cont_status & CONT_SOL)) {
|
&& !(compl_cont_status & CONT_SOL)) {
|
||||||
if ((p_ic ? MB_STRICMP(p, pat) : STRCMP(p, pat)) == 0)
|
if ((p_ic ? mb_stricmp(p, pat) : STRCMP(p, pat)) == 0)
|
||||||
return OK;
|
return OK;
|
||||||
} else if (*p != NUL) { /* ignore empty lines */
|
} else if (*p != NUL) { /* ignore empty lines */
|
||||||
/* expanding lines or words */
|
/* expanding lines or words */
|
||||||
if ((p_ic ? MB_STRNICMP(p, pat, compl_length)
|
assert(compl_length >= 0);
|
||||||
|
if ((p_ic ? mb_strnicmp(p, pat, (size_t)compl_length)
|
||||||
: STRNCMP(p, pat, compl_length)) == 0)
|
: STRNCMP(p, pat, compl_length)) == 0)
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
@ -4234,8 +4236,10 @@ search_line:
|
|||||||
) {
|
) {
|
||||||
/* compare the first "len" chars from "ptr" */
|
/* compare the first "len" chars from "ptr" */
|
||||||
startp = skipwhite(p);
|
startp = skipwhite(p);
|
||||||
if (p_ic)
|
if (p_ic) {
|
||||||
matched = !MB_STRNICMP(startp, ptr, len);
|
assert(len >= 0);
|
||||||
|
matched = !mb_strnicmp(startp, ptr, (size_t)len);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
matched = !STRNCMP(startp, ptr, len);
|
matched = !STRNCMP(startp, ptr, len);
|
||||||
if (matched && define_matched && whole
|
if (matched && define_matched && whole
|
||||||
|
@ -13082,8 +13082,9 @@ spell_dump_compl (
|
|||||||
// proper case later. This isn't exactly right when
|
// proper case later. This isn't exactly right when
|
||||||
// length changes for multi-byte characters with
|
// length changes for multi-byte characters with
|
||||||
// ignore case...
|
// ignore case...
|
||||||
|
assert(depth >= 0);
|
||||||
if (depth <= patlen
|
if (depth <= patlen
|
||||||
&& MB_STRNICMP(word, pat, depth) != 0)
|
&& mb_strnicmp(word, pat, (size_t)depth) != 0)
|
||||||
--depth;
|
--depth;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -13154,7 +13155,7 @@ static void dump_word(slang_T *slang, char_u *word, char_u *pat, int *dir, int d
|
|||||||
|
|
||||||
ml_append(lnum, p, (colnr_T)0, FALSE);
|
ml_append(lnum, p, (colnr_T)0, FALSE);
|
||||||
} else if (((dumpflags & DUMPFLAG_ICASE)
|
} else if (((dumpflags & DUMPFLAG_ICASE)
|
||||||
? MB_STRNICMP(p, pat, STRLEN(pat)) == 0
|
? mb_strnicmp(p, pat, STRLEN(pat)) == 0
|
||||||
: STRNCMP(p, pat, STRLEN(pat)) == 0)
|
: STRNCMP(p, pat, STRLEN(pat)) == 0)
|
||||||
&& ins_compl_add_infercase(p, (int)STRLEN(p),
|
&& ins_compl_add_infercase(p, (int)STRLEN(p),
|
||||||
p_ic, NULL, *dir, 0) == OK)
|
p_ic, NULL, *dir, 0) == OK)
|
||||||
|
@ -1391,7 +1391,7 @@ static int syn_stack_equal(synstate_T *sp)
|
|||||||
|| six->matches[j] == NULL)
|
|| six->matches[j] == NULL)
|
||||||
break;
|
break;
|
||||||
if ((SYN_ITEMS(syn_block)[CUR_STATE(i).si_idx]).sp_ic
|
if ((SYN_ITEMS(syn_block)[CUR_STATE(i).si_idx]).sp_ic
|
||||||
? MB_STRICMP(bsx->matches[j],
|
? mb_stricmp(bsx->matches[j],
|
||||||
six->matches[j]) != 0
|
six->matches[j]) != 0
|
||||||
: STRCMP(bsx->matches[j], six->matches[j]) != 0)
|
: STRCMP(bsx->matches[j], six->matches[j]) != 0)
|
||||||
break;
|
break;
|
||||||
|
@ -1641,7 +1641,8 @@ parse_line:
|
|||||||
/* No match yet and are at the end of the binary search. */
|
/* No match yet and are at the end of the binary search. */
|
||||||
break;
|
break;
|
||||||
} else if (state == TS_SKIP_BACK) {
|
} else if (state == TS_SKIP_BACK) {
|
||||||
if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0)
|
assert(cmplen >= 0);
|
||||||
|
if (mb_strnicmp(tagp.tagname, orgpat.head, (size_t)cmplen) != 0)
|
||||||
state = TS_STEP_FORWARD;
|
state = TS_STEP_FORWARD;
|
||||||
else
|
else
|
||||||
/* Have to skip back more. Restore the curr_offset
|
/* Have to skip back more. Restore the curr_offset
|
||||||
@ -1649,7 +1650,8 @@ parse_line:
|
|||||||
search_info.curr_offset = search_info.curr_offset_used;
|
search_info.curr_offset = search_info.curr_offset_used;
|
||||||
continue;
|
continue;
|
||||||
} else if (state == TS_STEP_FORWARD) {
|
} else if (state == TS_STEP_FORWARD) {
|
||||||
if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0) {
|
assert(cmplen >= 0);
|
||||||
|
if (mb_strnicmp(tagp.tagname, orgpat.head, (size_t)cmplen) != 0) {
|
||||||
if ((off_t)ftell(fp) > search_info.match_offset)
|
if ((off_t)ftell(fp) > search_info.match_offset)
|
||||||
break; /* past last match */
|
break; /* past last match */
|
||||||
else
|
else
|
||||||
@ -1657,7 +1659,8 @@ parse_line:
|
|||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
/* skip this match if it can't match */
|
/* skip this match if it can't match */
|
||||||
if (MB_STRNICMP(tagp.tagname, orgpat.head, cmplen) != 0)
|
assert(cmplen >= 0);
|
||||||
|
if (mb_strnicmp(tagp.tagname, orgpat.head, (size_t)cmplen) != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1691,7 +1694,8 @@ parse_line:
|
|||||||
match = FALSE;
|
match = FALSE;
|
||||||
else {
|
else {
|
||||||
if (orgpat.regmatch.rm_ic) {
|
if (orgpat.regmatch.rm_ic) {
|
||||||
match = (MB_STRNICMP(tagp.tagname, orgpat.pat, cmplen) == 0);
|
assert(cmplen >= 0);
|
||||||
|
match = mb_strnicmp(tagp.tagname, orgpat.pat, (size_t)cmplen) == 0;
|
||||||
if (match)
|
if (match)
|
||||||
match_no_ic = (STRNCMP(tagp.tagname, orgpat.pat,
|
match_no_ic = (STRNCMP(tagp.tagname, orgpat.pat,
|
||||||
cmplen) == 0);
|
cmplen) == 0);
|
||||||
|
@ -161,10 +161,6 @@ void term_init(void)
|
|||||||
setbuf(stdout, NULL);
|
setbuf(stdout, NULL);
|
||||||
|
|
||||||
out_flush();
|
out_flush();
|
||||||
|
|
||||||
#ifdef MACOS_CONVERT
|
|
||||||
mac_conv_init();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -545,7 +541,7 @@ void termcapinit(char_u *name)
|
|||||||
# define OUT_SIZE 2047
|
# define OUT_SIZE 2047
|
||||||
// Add one to allow term_write() in os_win32.c to append a NUL
|
// Add one to allow term_write() in os_win32.c to append a NUL
|
||||||
static char_u out_buf[OUT_SIZE + 1];
|
static char_u out_buf[OUT_SIZE + 1];
|
||||||
static int out_pos = 0; /* number of chars in out_buf */
|
static size_t out_pos = 0; /* number of chars in out_buf */
|
||||||
|
|
||||||
// Clear the output buffer
|
// Clear the output buffer
|
||||||
void out_buf_clear(void)
|
void out_buf_clear(void)
|
||||||
@ -558,7 +554,7 @@ void out_buf_clear(void)
|
|||||||
*/
|
*/
|
||||||
void out_flush(void)
|
void out_flush(void)
|
||||||
{
|
{
|
||||||
int len = out_pos;
|
size_t len = out_pos;
|
||||||
out_pos = 0;
|
out_pos = 0;
|
||||||
ui_write(out_buf, len);
|
ui_write(out_buf, len);
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ void ui_builtin_stop(void)
|
|||||||
UI_CALL(stop);
|
UI_CALL(stop);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ui_write(uint8_t *s, int len)
|
void ui_write(uint8_t *s, size_t len)
|
||||||
{
|
{
|
||||||
if (silent_mode && !p_verbose) {
|
if (silent_mode && !p_verbose) {
|
||||||
// Don't output anything in silent mode ("ex -s") unless 'verbose' set
|
// Don't output anything in silent mode ("ex -s") unless 'verbose' set
|
||||||
@ -346,7 +346,7 @@ end:
|
|||||||
UI_CALL(highlight_set, (ui->rgb ? rgb_attrs : cterm_attrs));
|
UI_CALL(highlight_set, (ui->rgb ? rgb_attrs : cterm_attrs));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void parse_abstract_ui_codes(uint8_t *ptr, int len)
|
static void parse_abstract_ui_codes(uint8_t *ptr, size_t len)
|
||||||
{
|
{
|
||||||
if (!ui_active()) {
|
if (!ui_active()) {
|
||||||
return;
|
return;
|
||||||
|
@ -290,17 +290,6 @@ enum {
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* We need to call mb_stricmp() even when we aren't dealing with a multi-byte
|
|
||||||
* encoding because mb_stricmp() takes care of all ascii and non-ascii
|
|
||||||
* encodings, including characters with umlauts in latin1, etc., while
|
|
||||||
* STRICMP() only handles the system locale version, which often does not
|
|
||||||
* handle non-ascii properly. */
|
|
||||||
|
|
||||||
# define MB_STRICMP(d, s) mb_strnicmp((char_u *)(d), (char_u *)(s), \
|
|
||||||
(int)MAXCOL)
|
|
||||||
# define MB_STRNICMP(d, s, n) mb_strnicmp((char_u *)(d), (char_u *)(s), \
|
|
||||||
(int)(n))
|
|
||||||
|
|
||||||
#define STRCAT(d, s) strcat((char *)(d), (char *)(s))
|
#define STRCAT(d, s) strcat((char *)(d), (char *)(s))
|
||||||
#define STRNCAT(d, s, n) strncat((char *)(d), (char *)(s), (size_t)(n))
|
#define STRNCAT(d, s, n) strncat((char *)(d), (char *)(s), (size_t)(n))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user