4 From: Bram Moolenaar <Bram@moolenaar.net>
6 Content-Type: text/plain; charset=ISO-8859-1
7 Content-Transfer-Encoding: 8bit
11 Problem: When recovering from a swap file the page size is likely to be
12 different from the minimum. The block used for the first page
13 then has a buffer of the wrong size, causing a crash when it's
14 reused later. (Zephaniah Hull)
15 Solution: Reallocate the buffer when the page size changes. Also check that
16 the page size is at least the minimum value.
20 *** ../vim-7.0.230/src/memline.c Tue Mar 6 20:27:03 2007
21 --- src/memline.c Thu Apr 19 16:10:39 2007
30 * If we guessed the wrong page size, we have to recalculate the
31 * highest block number in the file.
33 if (mfp->mf_page_size != (unsigned)char_to_long(b0p->b0_page_size))
35 + unsigned previous_page_size = mfp->mf_page_size;
37 mf_new_page_size(mfp, (unsigned)char_to_long(b0p->b0_page_size));
38 + if (mfp->mf_page_size < previous_page_size)
41 + msg_outtrans_attr(mfp->mf_fname, attr | MSG_HIST);
42 + MSG_PUTS_ATTR(_(" has been damaged (page size is smaller than minimum value).\n"),
47 if ((size = lseek(mfp->mf_fd, (off_t)0L, SEEK_END)) <= 0)
48 mfp->mf_blocknr_max = 0; /* no file or empty file */
50 mfp->mf_blocknr_max = (blocknr_T)(size / mfp->mf_page_size);
51 mfp->mf_infile_count = mfp->mf_blocknr_max;
53 + /* need to reallocate the memory used to store the data */
54 + p = alloc(mfp->mf_page_size);
57 + mch_memmove(p, hp->bh_data, previous_page_size);
58 + vim_free(hp->bh_data);
60 + b0p = (ZERO_BL *)(hp->bh_data);
64 *** ../vim-7.0.230/src/version.c Thu Apr 26 17:08:16 2007
65 --- src/version.c Thu Apr 26 17:11:38 2007
69 { /* Add new patch number below this line */
75 hundred-and-one symptoms of being an internet addict:
76 23. You can't call your mother...she doesn't have a modem.
78 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
79 /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
80 \\\ download, build and distribute -- http://www.A-A-P.org ///
81 \\\ help me help AIDS victims -- http://ICCF-Holland.org ///