| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.535 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.3.535 |
| Problem: Many #ifdefs for MB_MAXBYTES. |
| Solution: Also define MB_MAXBYTES without the +multi_byte feature. Fix |
| places where the buffer didn't include space for a NUL byte. |
| Files: src/arabic.c, src/edit.c, src/eval.c, src/getchar.c, src/mbyte.c, |
| src/misc1.c, src/screen.c, src/spell.c, src/vim.h |
| |
| |
| |
| |
| |
| *** 1066,1072 **** |
| |
| if (curr_c != c && ccp != NULL) |
| { |
| ! char_u buf[MB_MAXBYTES]; |
| |
| /* Update the first byte of the character. */ |
| (*mb_char2bytes)(curr_c, buf); |
| --- 1066,1072 ---- |
| |
| if (curr_c != c && ccp != NULL) |
| { |
| ! char_u buf[MB_MAXBYTES + 1]; |
| |
| /* Update the first byte of the character. */ |
| (*mb_char2bytes)(curr_c, buf); |
| |
| |
| |
| *** 1648,1658 **** |
| #define PC_STATUS_RIGHT 1 /* right halve of double-wide char */ |
| #define PC_STATUS_LEFT 2 /* left halve of double-wide char */ |
| #define PC_STATUS_SET 3 /* pc_bytes was filled */ |
| - #ifdef FEAT_MBYTE |
| static char_u pc_bytes[MB_MAXBYTES + 1]; /* saved bytes */ |
| - #else |
| - static char_u pc_bytes[2]; /* saved bytes */ |
| - #endif |
| static int pc_attr; |
| static int pc_row; |
| static int pc_col; |
| --- 1648,1654 ---- |
| |
| *** 6819,6829 **** |
| char_u *s; |
| |
| vim_free(last_insert); |
| - #ifdef FEAT_MBYTE |
| last_insert = alloc(MB_MAXBYTES * 3 + 5); |
| - #else |
| - last_insert = alloc(6); |
| - #endif |
| if (last_insert != NULL) |
| { |
| s = last_insert; |
| --- 6815,6821 ---- |
| |
| *** 6861,6867 **** |
| char_u *s; |
| { |
| #ifdef FEAT_MBYTE |
| ! char_u temp[MB_MAXBYTES]; |
| int i; |
| int len; |
| |
| --- 6853,6859 ---- |
| char_u *s; |
| { |
| #ifdef FEAT_MBYTE |
| ! char_u temp[MB_MAXBYTES + 1]; |
| int i; |
| int len; |
| |
| |
| *** 7423,7429 **** |
| int cc; |
| { |
| int n; |
| ! char_u buf[MB_MAXBYTES]; |
| int i; |
| int c; |
| |
| --- 7415,7421 ---- |
| int cc; |
| { |
| int n; |
| ! char_u buf[MB_MAXBYTES + 1]; |
| int i; |
| int c; |
| |
| |
| *** 10109,10119 **** |
| int c; |
| { |
| char_u *res; |
| - #ifdef FEAT_MBYTE |
| char_u buf[MB_MAXBYTES + 1]; |
| - #else |
| - char_u buf[2]; |
| - #endif |
| |
| /* Return quickly when there is nothing to do. */ |
| if (!has_insertcharpre()) |
| --- 10101,10107 ---- |
| |
| |
| |
| *** 19170,19180 **** |
| set_vim_var_char(c) |
| int c; |
| { |
| ! #ifdef FEAT_MBYTE |
| ! char_u buf[MB_MAXBYTES]; |
| ! #else |
| ! char_u buf[2]; |
| ! #endif |
| |
| #ifdef FEAT_MBYTE |
| if (has_mbyte) |
| --- 19170,19176 ---- |
| set_vim_var_char(c) |
| int c; |
| { |
| ! char_u buf[MB_MAXBYTES + 1]; |
| |
| #ifdef FEAT_MBYTE |
| if (has_mbyte) |
| |
| |
| |
| *** 723,729 **** |
| int c; |
| #ifdef FEAT_MBYTE |
| int n; |
| ! char_u buf[MB_MAXBYTES]; |
| int i; |
| #endif |
| |
| --- 723,729 ---- |
| int c; |
| #ifdef FEAT_MBYTE |
| int n; |
| ! char_u buf[MB_MAXBYTES + 1]; |
| int i; |
| #endif |
| |
| |
| *** 1072,1078 **** |
| int c; |
| { |
| #ifdef FEAT_MBYTE |
| ! char_u buf[MB_MAXBYTES]; |
| #else |
| char_u buf[4]; |
| #endif |
| --- 1072,1078 ---- |
| int c; |
| { |
| #ifdef FEAT_MBYTE |
| ! char_u buf[MB_MAXBYTES + 1]; |
| #else |
| char_u buf[4]; |
| #endif |
| |
| *** 1547,1553 **** |
| int c, c2; |
| #ifdef FEAT_MBYTE |
| int n; |
| ! char_u buf[MB_MAXBYTES]; |
| int i; |
| #endif |
| |
| --- 1547,1553 ---- |
| int c, c2; |
| #ifdef FEAT_MBYTE |
| int n; |
| ! char_u buf[MB_MAXBYTES + 1]; |
| int i; |
| #endif |
| |
| |
| *** 4335,4345 **** |
| int scol; /* starting column of the abbr. */ |
| int j; |
| char_u *s; |
| - #ifdef FEAT_MBYTE |
| char_u tb[MB_MAXBYTES + 4]; |
| - #else |
| - char_u tb[4]; |
| - #endif |
| mapblock_T *mp; |
| #ifdef FEAT_LOCALMAP |
| mapblock_T *mp2; |
| --- 4335,4341 ---- |
| |
| |
| |
| *** 708,714 **** |
| */ |
| n = (i & 0x80) ? 2 : 1; |
| # else |
| ! char buf[MB_MAXBYTES]; |
| # ifdef X_LOCALE |
| # ifndef mblen |
| # define mblen _Xmblen |
| --- 708,714 ---- |
| */ |
| n = (i & 0x80) ? 2 : 1; |
| # else |
| ! char buf[MB_MAXBYTES + 1]; |
| # ifdef X_LOCALE |
| # ifndef mblen |
| # define mblen _Xmblen |
| |
| *** 1953,1959 **** |
| /* |
| * Convert the character at screen position "off" to a sequence of bytes. |
| * Includes the composing characters. |
| ! * "buf" must at least have the length MB_MAXBYTES. |
| * Only to be used when ScreenLinesUC[off] != 0. |
| * Returns the produced number of bytes. |
| */ |
| --- 1953,1959 ---- |
| /* |
| * Convert the character at screen position "off" to a sequence of bytes. |
| * Includes the composing characters. |
| ! * "buf" must at least have the length MB_MAXBYTES + 1. |
| * Only to be used when ScreenLinesUC[off] != 0. |
| * Returns the produced number of bytes. |
| */ |
| |
| |
| |
| *** 1932,1938 **** |
| int c; |
| { |
| #if defined(FEAT_MBYTE) || defined(PROTO) |
| ! char_u buf[MB_MAXBYTES]; |
| int n; |
| |
| n = (*mb_char2bytes)(c, buf); |
| --- 1932,1938 ---- |
| int c; |
| { |
| #if defined(FEAT_MBYTE) || defined(PROTO) |
| ! char_u buf[MB_MAXBYTES + 1]; |
| int n; |
| |
| n = (*mb_char2bytes)(c, buf); |
| |
| |
| |
| *** 6621,6636 **** |
| int row, col; |
| int attr; |
| { |
| - #ifdef FEAT_MBYTE |
| char_u buf[MB_MAXBYTES + 1]; |
| |
| ! buf[(*mb_char2bytes)(c, buf)] = NUL; |
| ! #else |
| ! char_u buf[2]; |
| ! |
| ! buf[0] = c; |
| ! buf[1] = NUL; |
| #endif |
| screen_puts(buf, row, col, attr); |
| } |
| |
| --- 6621,6637 ---- |
| int row, col; |
| int attr; |
| { |
| char_u buf[MB_MAXBYTES + 1]; |
| |
| ! #ifdef FEAT_MBYTE |
| ! if (has_mbyte) |
| ! buf[(*mb_char2bytes)(c, buf)] = NUL; |
| ! else |
| #endif |
| + { |
| + buf[0] = c; |
| + buf[1] = NUL; |
| + } |
| screen_puts(buf, row, col, attr); |
| } |
| |
| |
| |
| |
| *** 13694,13700 **** |
| { |
| int m1, m2; |
| #ifdef FEAT_MBYTE |
| ! char_u buf[MB_MAXBYTES]; |
| hashitem_T *hi; |
| |
| if (c1 >= 256) |
| --- 13694,13700 ---- |
| { |
| int m1, m2; |
| #ifdef FEAT_MBYTE |
| ! char_u buf[MB_MAXBYTES + 1]; |
| hashitem_T *hi; |
| |
| if (c1 >= 256) |
| |
| |
| |
| *** 1703,1708 **** |
| --- 1703,1710 ---- |
| * character of up to 6 bytes, or one 16-bit character of up to three bytes |
| * plus six following composing characters of three bytes each. */ |
| # define MB_MAXBYTES 21 |
| + #else |
| + # define MB_MAXBYTES 1 |
| #endif |
| |
| #if (defined(FEAT_PROFILE) || defined(FEAT_RELTIME)) && !defined(PROTO) |
| |
| *** 2017,2022 **** |
| --- 2019,2025 ---- |
| #pragma warning(disable : 4312) |
| #endif |
| |
| + /* Note: a NULL argument for vim_realloc() is not portable, don't use it. */ |
| #if defined(MEM_PROFILE) |
| # define vim_realloc(ptr, size) mem_realloc((ptr), (size)) |
| #else |
| |
| |
| |
| *** 716,717 **** |
| --- 716,719 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 535, |
| /**/ |
| |
| -- |
| Me? A skeptic? I trust you have proof. |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |