]> git.pld-linux.org Git - packages/vim.git/blob - 7.0.231
- updated to 1.15
[packages/vim.git] / 7.0.231
1 To: vim-dev@vim.org
2 Subject: patch 7.0.231
3 Fcc: outbox
4 From: Bram Moolenaar <Bram@moolenaar.net>
5 Mime-Version: 1.0
6 Content-Type: text/plain; charset=ISO-8859-1
7 Content-Transfer-Encoding: 8bit
8 ------------
9
10 Patch 7.0.231
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.
17 Files:      src/memline.c
18
19
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
22 ***************
23 *** 1015,1032 ****
24 --- 1015,1053 ----
25         msg_end();
26         goto theend;
27       }
28
29       /*
30        * If we guessed the wrong page size, we have to recalculate the
31        * highest block number in the file.
32        */
33       if (mfp->mf_page_size != (unsigned)char_to_long(b0p->b0_page_size))
34       {
35 +       unsigned previous_page_size = mfp->mf_page_size;
36
37         mf_new_page_size(mfp, (unsigned)char_to_long(b0p->b0_page_size));
38 +       if (mfp->mf_page_size < previous_page_size)
39 +       {
40 +           msg_start();
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"),
43 +                       attr | MSG_HIST);
44 +           msg_end();
45 +           goto theend;
46 +       }
47         if ((size = lseek(mfp->mf_fd, (off_t)0L, SEEK_END)) <= 0)
48             mfp->mf_blocknr_max = 0;        /* no file or empty file */
49         else
50             mfp->mf_blocknr_max = (blocknr_T)(size / mfp->mf_page_size);
51         mfp->mf_infile_count = mfp->mf_blocknr_max;
52
53 +       /* need to reallocate the memory used to store the data */
54 +       p = alloc(mfp->mf_page_size);
55 +       if (p == NULL)
56 +           goto theend;
57 +       mch_memmove(p, hp->bh_data, previous_page_size);
58 +       vim_free(hp->bh_data);
59 +       hp->bh_data = p;
60 +       b0p = (ZERO_BL *)(hp->bh_data);
61       }
62   
63   /*
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
66 ***************
67 *** 668,669 ****
68 --- 668,671 ----
69   {   /* Add new patch number below this line */
70 + /**/
71 +     231,
72   /**/
73
74 -- 
75 hundred-and-one symptoms of being an internet addict:
76 23. You can't call your mother...she doesn't have a modem.
77
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    ///
This page took 0.036284 seconds and 3 git commands to generate.