Patch 8.0.1723
Problem: Using one item array size declaration is misleading.
Solution: Instead of using "[1]" and actually using a larger array, use
"[]". This is to verify that this C99 feature works for all
compilers.
Files: src/structs.h, src/getchar.c
*** ../vim-8.0.1722/src/structs.h 2018-04-10 15:59:04.295392601 +0200
--- src/structs.h 2018-04-16 14:45:10.504367039 +0200
***************
*** 511,517 ****
struct buffblock
{
buffblock_T *b_next; /* pointer to next buffblock */
! char_u b_str[1]; /* contents (actually longer) */
};
/*
--- 511,517 ----
struct buffblock
{
buffblock_T *b_next; /* pointer to next buffblock */
! char_u b_str[]; /* contents (flexible array) */
};
/*
***************
*** 519,525 ****
*/
struct buffheader
{
! buffblock_T bh_first; /* first (dummy) block of list */
buffblock_T *bh_curr; /* buffblock for appending */
int bh_index; /* index for reading */
int bh_space; /* space in bh_curr for appending */
--- 519,525 ----
*/
struct buffheader
{
! buffblock_T *bh_first; /* first block of the list */
buffblock_T *bh_curr; /* buffblock for appending */
int bh_index; /* index for reading */
int bh_space; /* space in bh_curr for appending */
*** ../vim-8.0.1722/src/getchar.c 2018-03-04 18:07:04.256592423 +0100
--- src/getchar.c 2018-04-16 14:38:22.299064897 +0200
***************
*** 40,48 ****
#define MINIMAL_SIZE 20 /* minimal size for b_str */
! static buffheader_T redobuff = {{NULL, {NUL}}, NULL, 0, 0};
! static buffheader_T old_redobuff = {{NULL, {NUL}}, NULL, 0, 0};
! static buffheader_T recordbuff = {{NULL, {NUL}}, NULL, 0, 0};
static int typeahead_char = 0; /* typeahead char that's not
flushed */
--- 40,48 ----
#define MINIMAL_SIZE 20 /* minimal size for b_str */
! static buffheader_T redobuff = {NULL, NULL, 0, 0};
! static buffheader_T old_redobuff = {NULL, NULL, 0, 0};
! static buffheader_T recordbuff = {NULL, NULL, 0, 0};
static int typeahead_char = 0; /* typeahead char that's not
flushed */
***************
*** 138,149 ****
{
buffblock_T *p, *np;
! for (p = buf->bh_first.b_next; p != NULL; p = np)
{
np = p->b_next;
vim_free(p);
}
! buf->bh_first.b_next = NULL;
}
/*
--- 138,150 ----
{
buffblock_T *p, *np;
! for (p = buf->bh_first; p != NULL; p = np)
{
np = p->b_next;
vim_free(p);
}
! buf->bh_first = NULL;
! buf->bh_curr = NULL;
}
/*
***************
*** 159,174 ****
char_u *p = NULL;
char_u *p2;
char_u *str;
! buffblock_T *bp;
/* compute the total length of the string */
! for (bp = buffer->bh_first.b_next; bp != NULL; bp = bp->b_next)
count += (long_u)STRLEN(bp->b_str);
if ((count || dozero) && (p = lalloc(count + 1, TRUE)) != NULL)
{
p2 = p;
! for (bp = buffer->bh_first.b_next; bp != NULL; bp = bp->b_next)
for (str = bp->b_str; *str; )
*p2++ = *str++;
*p2 = NUL;
--- 160,175 ----
char_u *p = NULL;
char_u *p2;
char_u *str;
! buffblock_T *bp;
/* compute the total length of the string */
! for (bp = buffer->bh_first; bp != NULL; bp = bp->b_next)
count += (long_u)STRLEN(bp->b_str);
if ((count || dozero) && (p = lalloc(count + 1, TRUE)) != NULL)
{
p2 = p;
! for (bp = buffer->bh_first; bp != NULL; bp = bp->b_next)
for (str = bp->b_str; *str; )
*p2++ = *str++;
*p2 = NUL;
***************
*** 232,248 ****
long slen) /* length of "s" or -1 */
{
buffblock_T *p;
! long_u len;
if (slen < 0)
slen = (long)STRLEN(s);
if (slen == 0) /* don't add empty strings */
return;
! if (buf->bh_first.b_next == NULL) /* first add to list */
{
buf->bh_space = 0;
! buf->bh_curr = &(buf->bh_first);
}
else if (buf->bh_curr == NULL) /* buffer has already been read */
{
--- 233,249 ----
long slen) /* length of "s" or -1 */
{
buffblock_T *p;
! long_u len;
if (slen < 0)
slen = (long)STRLEN(s);
if (slen == 0) /* don't add empty strings */
return;
! if (buf->bh_first == NULL) /* first add to list */
{
buf->bh_space = 0;
! buf->bh_curr = NULL;
}
else if (buf->bh_curr == NULL) /* buffer has already been read */
{
***************
*** 250,258 ****
return;
}
else if (buf->bh_index != 0)
! mch_memmove(buf->bh_first.b_next->b_str,
! buf->bh_first.b_next->b_str + buf->bh_index,
! STRLEN(buf->bh_first.b_next->b_str + buf->bh_index) + 1);
buf->bh_index = 0;
if (buf->bh_space >= (int)slen)
--- 251,259 ----
return;
}
else if (buf->bh_index != 0)
! mch_memmove(buf->bh_first->b_str,
! buf->bh_first->b_str + buf->bh_index,
! STRLEN(buf->bh_first->b_str + buf->bh_index) + 1);
buf->bh_index = 0;
if (buf->bh_space >= (int)slen)
***************
*** 267,282 ****
len = MINIMAL_SIZE;
else
len = slen;
! p = (buffblock_T *)lalloc((long_u)(sizeof(buffblock_T) + len),
! TRUE);
if (p == NULL)
return; /* no space, just forget it */
buf->bh_space = (int)(len - slen);
vim_strncpy(p->b_str, s, (size_t)slen);
! p->b_next = buf->bh_curr->b_next;
! buf->bh_curr->b_next = p;
! buf->bh_curr = p;
}
return;
}
--- 268,292 ----
len = MINIMAL_SIZE;
else
len = slen;
! p = (buffblock_T *)lalloc((long_u)(sizeof(buffblock_T) + len + 1),
! TRUE);
if (p == NULL)
return; /* no space, just forget it */
buf->bh_space = (int)(len - slen);
vim_strncpy(p->b_str, s, (size_t)slen);
! if (buf->bh_curr == NULL)
! {
! p->b_next = NULL;
! buf->bh_first = p;
! buf->bh_curr = p;
! }
! else
! {
! p->b_next = buf->bh_curr->b_next;
! buf->bh_curr->b_next = p;
! buf->bh_curr = p;
! }
}
return;
}
***************
*** 348,357 ****
}
/* First read ahead buffer. Used for translated commands. */
! static buffheader_T readbuf1 = {{NULL, {NUL}}, NULL, 0, 0};
/* Second read ahead buffer. Used for redo. */
! static buffheader_T readbuf2 = {{NULL, {NUL}}, NULL, 0, 0};
/*
* Get one byte from the read buffers. Use readbuf1 one first, use readbuf2
--- 358,367 ----
}
/* First read ahead buffer. Used for translated commands. */
! static buffheader_T readbuf1 = {NULL, NULL, 0, 0};
/* Second read ahead buffer. Used for redo. */
! static buffheader_T readbuf2 = {NULL, NULL, 0, 0};
/*
* Get one byte from the read buffers. Use readbuf1 one first, use readbuf2
***************
*** 376,392 ****
char_u c;
buffblock_T *curr;
! if (buf->bh_first.b_next == NULL) /* buffer is empty */
return NUL;
! curr = buf->bh_first.b_next;
c = curr->b_str[buf->bh_index];
if (advance)
{
if (curr->b_str[++buf->bh_index] == NUL)
{
! buf->bh_first.b_next = curr->b_next;
vim_free(curr);
buf->bh_index = 0;
}
--- 386,402 ----
char_u c;
buffblock_T *curr;
! if (buf->bh_first == NULL) /* buffer is empty */
return NUL;
! curr = buf->bh_first;
c = curr->b_str[buf->bh_index];
if (advance)
{
if (curr->b_str[++buf->bh_index] == NUL)
{
! buf->bh_first = curr->b_next;
vim_free(curr);
buf->bh_index = 0;
}
***************
*** 400,413 ****
static void
start_stuff(void)
{
! if (readbuf1.bh_first.b_next != NULL)
{
! readbuf1.bh_curr = &(readbuf1.bh_first);
readbuf1.bh_space = 0;
}
! if (readbuf2.bh_first.b_next != NULL)
{
! readbuf2.bh_curr = &(readbuf2.bh_first);
readbuf2.bh_space = 0;
}
}
--- 410,423 ----
static void
start_stuff(void)
{
! if (readbuf1.bh_first != NULL)
{
! readbuf1.bh_curr = readbuf1.bh_first;
readbuf1.bh_space = 0;
}
! if (readbuf2.bh_first != NULL)
{
! readbuf2.bh_curr = readbuf2.bh_first;
readbuf2.bh_space = 0;
}
}
***************
*** 418,425 ****
int
stuff_empty(void)
{
! return (readbuf1.bh_first.b_next == NULL
! && readbuf2.bh_first.b_next == NULL);
}
/*
--- 428,435 ----
int
stuff_empty(void)
{
! return (readbuf1.bh_first == NULL
! && readbuf2.bh_first == NULL);
}
/*
***************
*** 429,435 ****
int
readbuf1_empty(void)
{
! return (readbuf1.bh_first.b_next == NULL);
}
/*
--- 439,445 ----
int
readbuf1_empty(void)
{
! return (readbuf1.bh_first == NULL);
}
/*
***************
*** 494,500 ****
{
free_buff(&old_redobuff);
old_redobuff = redobuff;
! redobuff.bh_first.b_next = NULL;
}
}
--- 504,510 ----
{
free_buff(&old_redobuff);
old_redobuff = redobuff;
! redobuff.bh_first = NULL;
}
}
***************
*** 509,515 ****
{
free_buff(&redobuff);
redobuff = old_redobuff;
! old_redobuff.bh_first.b_next = NULL;
start_stuff();
while (read_readbuffers(TRUE) != NUL)
;
--- 519,525 ----
{
free_buff(&redobuff);
redobuff = old_redobuff;
! old_redobuff.bh_first = NULL;
start_stuff();
while (read_readbuffers(TRUE) != NUL)
;
***************
*** 526,534 ****
char_u *s;
save_redo->sr_redobuff = redobuff;
! redobuff.bh_first.b_next = NULL;
save_redo->sr_old_redobuff = old_redobuff;
! old_redobuff.bh_first.b_next = NULL;
/* Make a copy, so that ":normal ." in a function works. */
s = get_buffcont(&save_redo->sr_redobuff, FALSE);
--- 536,544 ----
char_u *s;
save_redo->sr_redobuff = redobuff;
! redobuff.bh_first = NULL;
save_redo->sr_old_redobuff = old_redobuff;
! old_redobuff.bh_first = NULL;
/* Make a copy, so that ":normal ." in a function works. */
s = get_buffcont(&save_redo->sr_redobuff, FALSE);
***************
*** 747,755 ****
if (init)
{
if (old_redo)
! bp = old_redobuff.bh_first.b_next;
else
! bp = redobuff.bh_first.b_next;
if (bp == NULL)
return FAIL;
p = bp->b_str;
--- 757,765 ----
if (init)
{
if (old_redo)
! bp = old_redobuff.bh_first;
else
! bp = redobuff.bh_first;
if (bp == NULL)
return FAIL;
p = bp->b_str;
***************
*** 1372,1380 ****
old_char = -1;
tp->save_readbuf1 = readbuf1;
! readbuf1.bh_first.b_next = NULL;
tp->save_readbuf2 = readbuf2;
! readbuf2.bh_first.b_next = NULL;
# ifdef USE_INPUT_BUF
tp->save_inputbuf = get_input_buf();
# endif
--- 1382,1390 ----
old_char = -1;
tp->save_readbuf1 = readbuf1;
! readbuf1.bh_first = NULL;
tp->save_readbuf2 = readbuf2;
! readbuf2.bh_first = NULL;
# ifdef USE_INPUT_BUF
tp->save_inputbuf = get_input_buf();
# endif
*** ../vim-8.0.1722/src/version.c 2018-04-15 23:45:12.982388377 +0200
--- src/version.c 2018-04-16 14:44:26.152663276 +0200
***************
*** 764,765 ****
--- 764,767 ----
{ /* Add new patch number below this line */
+ /**/
+ 1723,
/**/
--
hundred-and-one symptoms of being an internet addict:
195. Your cat has its own home page.
/// Bram Moolenaar -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.