To: vim-dev@vim.org
Subject: Patch 7.2.106
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.106
Problem: Endless loop when using "]s" in HTML when there are no
misspellings. (Ingo Karkat)
Solution: Break the search loop. Also fix pointer alignment for systems
with pointers larger than int.
Files: src/spell.c
*** ../vim-7.2.105/src/spell.c Tue Dec 9 22:34:02 2008
--- src/spell.c Wed Feb 11 17:54:50 2009
***************
*** 2376,2382 ****
/* If we are back at the starting line and there is no match then
* give up. */
! if (lnum == wp->w_cursor.lnum && !found_one)
break;
/* Skip the characters at the start of the next line that were
--- 2376,2382 ----
/* If we are back at the starting line and there is no match then
* give up. */
! if (lnum == wp->w_cursor.lnum && (!found_one || wrapped))
break;
/* Skip the characters at the start of the next line that were
***************
*** 4956,4968 ****
* Structure that is used to store the items in the word tree. This avoids
* the need to keep track of each allocated thing, everything is freed all at
* once after ":mkspell" is done.
*/
#define SBLOCKSIZE 16000 /* size of sb_data */
typedef struct sblock_S sblock_T;
struct sblock_S
{
- sblock_T *sb_next; /* next block in list */
int sb_used; /* nr of bytes already in use */
char_u sb_data[1]; /* data, actually longer */
};
--- 4956,4971 ----
* Structure that is used to store the items in the word tree. This avoids
* the need to keep track of each allocated thing, everything is freed all at
* once after ":mkspell" is done.
+ * Note: "sb_next" must be just before "sb_data" to make sure the alignment of
+ * "sb_data" is correct for systems where pointers must be aligned on
+ * pointer-size boundaries and sizeof(pointer) > sizeof(int) (e.g., Sparc).
*/
#define SBLOCKSIZE 16000 /* size of sb_data */
typedef struct sblock_S sblock_T;
struct sblock_S
{
int sb_used; /* nr of bytes already in use */
+ sblock_T *sb_next; /* next block in list */
char_u sb_data[1]; /* data, actually longer */
};
***************
*** 15011,15017 ****
case 0:
/*
! * Lenghts are equal, thus changes must result in same length: An
* insert is only possible in combination with a delete.
* 1: check if for identical strings
*/
--- 15014,15020 ----
case 0:
/*
! * Lengths are equal, thus changes must result in same length: An
* insert is only possible in combination with a delete.
* 1: check if for identical strings
*/
*** ../vim-7.2.105/src/version.c Wed Feb 11 16:45:56 2009
--- src/version.c Wed Feb 11 17:56:34 2009
***************
*** 678,679 ****
--- 678,681 ----
{ /* Add new patch number below this line */
+ /**/
+ 106,
/**/
--
If bankers can count, how come they have eight windows and
only four tellers?
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ download, build and distribute -- http://www.A-A-P.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///