To: vim_dev@googlegroups.com Subject: Patch 7.3.535 Fcc: outbox From: Bram Moolenaar 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 *** ../vim-7.3.534/src/arabic.c 2010-08-15 21:57:28.000000000 +0200 --- src/arabic.c 2012-06-01 14:59:37.000000000 +0200 *************** *** 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); *** ../vim-7.3.534/src/edit.c 2012-06-01 14:57:47.000000000 +0200 --- src/edit.c 2012-06-01 15:01:49.000000000 +0200 *************** *** 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 ---- *** ../vim-7.3.534/src/eval.c 2012-05-18 18:34:15.000000000 +0200 --- src/eval.c 2012-06-01 15:02:08.000000000 +0200 *************** *** 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) *** ../vim-7.3.534/src/getchar.c 2012-04-05 16:07:01.000000000 +0200 --- src/getchar.c 2012-06-01 15:03:51.000000000 +0200 *************** *** 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 ---- *** ../vim-7.3.534/src/mbyte.c 2012-03-07 19:38:52.000000000 +0100 --- src/mbyte.c 2012-06-01 15:04:27.000000000 +0200 *************** *** 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. */ *** ../vim-7.3.534/src/misc1.c 2012-04-30 21:09:38.000000000 +0200 --- src/misc1.c 2012-06-01 15:04:56.000000000 +0200 *************** *** 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); *** ../vim-7.3.534/src/screen.c 2012-03-23 16:25:13.000000000 +0100 --- src/screen.c 2012-06-01 15:06:03.000000000 +0200 *************** *** 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); } *** ../vim-7.3.534/src/spell.c 2012-05-18 18:07:57.000000000 +0200 --- src/spell.c 2012-06-01 15:06:30.000000000 +0200 *************** *** 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) *** ../vim-7.3.534/src/vim.h 2012-04-30 18:48:38.000000000 +0200 --- src/vim.h 2012-06-01 14:59:28.000000000 +0200 *************** *** 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 *** ../vim-7.3.534/src/version.c 2012-06-01 14:57:47.000000000 +0200 --- src/version.c 2012-06-01 15:08:20.000000000 +0200 *************** *** 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 ///