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
*** ../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 ///