]> git.pld-linux.org Git - packages/vim.git/blob - 6.2.149
- manpaged md5 fix
[packages/vim.git] / 6.2.149
1 To: vim-dev@vim.org
2 Subject: Patch 6.2.149
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 6.2.149
11 Problem:    When the cursor is on a line past 21,474,748 the indicated
12             percentage of the position is invalid.  With that many lines
13             "100%" causes a negative cursor line number, resulting in a crash.
14             (Daniel Goujot)
15 Solution:   Divide by 100 instead of multiplying.  Avoid overflow when
16             computing the line number for "100%".
17 Files:      src/buffer.c, src/ex_cmds2.c, src/normal.c
18
19
20 *** ../vim-6.2.148/src/buffer.c Sat Sep 27 19:36:46 2003
21 --- src/buffer.c        Sat Nov  8 13:21:58 2003
22 ***************
23 *** 2719,2725 ****
24             (curbufIsChanged() || (curbuf->b_flags & BF_WRITE_MASK)
25                                                           || curbuf->b_p_ro) ?
26                                                                     " " : "");
27 !     n = (int)(((long)curwin->w_cursor.lnum * 100L) /
28                                             (long)curbuf->b_ml.ml_line_count);
29       if (curbuf->b_ml.ml_flags & ML_EMPTY)
30       {
31 --- 2719,2731 ----
32             (curbufIsChanged() || (curbuf->b_flags & BF_WRITE_MASK)
33                                                           || curbuf->b_p_ro) ?
34                                                                     " " : "");
35 !     /* With 32 bit longs and more than 21,474,836 lines multiplying by 100
36 !      * causes an overflow, thus for large numbers divide instead. */
37 !     if (curwin->w_cursor.lnum > 1000000L)
38 !       n = (int)(((long)curwin->w_cursor.lnum) /
39 !                                  ((long)curbuf->b_ml.ml_line_count / 100L));
40 !     else
41 !       n = (int)(((long)curwin->w_cursor.lnum * 100L) /
42                                             (long)curbuf->b_ml.ml_line_count);
43       if (curbuf->b_ml.ml_flags & ML_EMPTY)
44       {
45 ***************
46 *** 3755,3762 ****
47       else if (above <= 0)
48         STRCPY(str, _("Top"));
49       else
50 !       sprintf((char *)str, "%2d%%",
51 !               (int)(above * 100 / (above + below)));
52   }
53   #endif
54   
55 --- 3761,3769 ----
56       else if (above <= 0)
57         STRCPY(str, _("Top"));
58       else
59 !       sprintf((char *)str, "%2d%%", above > 1000000L
60 !                                   ? (int)(above / ((above + below) / 100L))
61 !                                   : (int)(above * 100L / (above + below)));
62   }
63   #endif
64   
65 *** ../vim-6.2.148/src/ex_cmds2.c       Sun Oct 12 20:20:38 2003
66 --- src/ex_cmds2.c      Sun Nov  9 16:44:15 2003
67 ***************
68 *** 3401,3407 ****
69   
70                     sprintf((char *)IObuff, _("Printing page %d (%d%%)"),
71                             page_count + 1 + side,
72 !                           (int)((prtpos.bytes_printed * 100)
73                                                            / bytes_to_print));
74                     if (!mch_print_begin_page(IObuff))
75                         goto print_fail;
76 --- 3401,3410 ----
77   
78                     sprintf((char *)IObuff, _("Printing page %d (%d%%)"),
79                             page_count + 1 + side,
80 !                           prtpos.bytes_printed > 1000000
81 !                               ? (int)(prtpos.bytes_printed /
82 !                                                      (bytes_to_print / 100))
83 !                               : (int)((prtpos.bytes_printed * 100)
84                                                            / bytes_to_print));
85                     if (!mch_print_begin_page(IObuff))
86                         goto print_fail;
87 *** ../vim-6.2.148/src/normal.c Sun Nov  2 15:49:56 2003
88 --- src/normal.c        Sun Nov  9 13:35:44 2003
89 ***************
90 *** 5814,5822 ****
91         {
92             cap->oap->motion_type = MLINE;
93             setpcmark();
94 !                           /* round up, so CTRL-G will give same value */
95 !           curwin->w_cursor.lnum = (curbuf->b_ml.ml_line_count *
96                                                     cap->count0 + 99L) / 100L;
97             beginline(BL_SOL | BL_FIX);
98         }
99       }
100 --- 5814,5829 ----
101         {
102             cap->oap->motion_type = MLINE;
103             setpcmark();
104 !           /* Round up, so CTRL-G will give same value.  Watch out for a
105 !            * large line count, the line number must not go negative! */
106 !           if (curbuf->b_ml.ml_line_count > 1000000)
107 !               curwin->w_cursor.lnum = (curbuf->b_ml.ml_line_count + 99L)
108 !                                                        / 100L * cap->count0;
109 !           else
110 !               curwin->w_cursor.lnum = (curbuf->b_ml.ml_line_count *
111                                                     cap->count0 + 99L) / 100L;
112 +           if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
113 +               curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
114             beginline(BL_SOL | BL_FIX);
115         }
116       }
117 *** ../vim-6.2.148/src/version.c        Sun Nov  9 20:26:53 2003
118 --- src/version.c       Sun Nov  9 20:29:14 2003
119 ***************
120 *** 639,640 ****
121 --- 639,642 ----
122   {   /* Add new patch number below this line */
123 + /**/
124 +     149,
125   /**/
126
127 -- 
128 The acknowledged parents of reengineering are Michael Hammer and James Champy.
129 When I say they're the "parents" I don't mean they had sex - and I apologize
130 for making you think about it.  I mean they wrote the best-selling business
131 book _Reengineering the Corporation_, which was published in 1993.
132    Businesses flocked to reengineering like frat boys to a drunken
133 cheerleader.  (This analogy wasn't necessary, but I'm trying to get my mind
134 off that Hammer and Champy thing.)
135                                 (Scott Adams - The Dilbert principle)
136
137  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
138 ///          Creator of Vim - Vi IMproved -- http://www.Vim.org          \\\
139 \\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
140  \\\  Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html  ///
This page took 0.060557 seconds and 3 git commands to generate.