diff --git a/7.2.106 b/7.2.106 new file mode 100644 index 0000000..2c54797 --- /dev/null +++ b/7.2.106 @@ -0,0 +1,103 @@ +To: vim-dev@vim.org +Subject: Patch 7.2.106 +Fcc: outbox +From: Bram Moolenaar +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 ///