]>
Commit | Line | Data |
---|---|---|
2b73553d AM |
1 | To: vim-dev@vim.org |
2 | Subject: Patch 6.3.012 | |
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.3.012 | |
11 | Problem: Internal lalloc(0) error when using a complicated multi-line | |
12 | pattern in a substitute command. (Luc Hermitte) | |
13 | Solution: Avoid going past the end of a line. | |
14 | Files: src/ex_cmds.c | |
15 | ||
16 | ||
17 | *** ../vim-6.3.011/src/ex_cmds.c Thu Jun 10 21:08:20 2004 | |
18 | --- src/ex_cmds.c Tue Jul 6 14:47:37 2004 | |
19 | *************** | |
20 | *** 3727,3732 **** | |
21 | --- 3727,3733 ---- | |
22 | unsigned len, needed_len; | |
23 | long nmatch_tl = 0; /* nr of lines matched below lnum */ | |
24 | int do_again; /* do it again after joining lines */ | |
25 | + int skip_match = FALSE; | |
26 | ||
27 | /* | |
28 | * The new text is build up step by step, to avoid too much | |
29 | *************** | |
30 | *** 3811,3817 **** | |
31 | && regmatch.endpos[0].lnum == 0 | |
32 | && matchcol == regmatch.endpos[0].col) | |
33 | { | |
34 | ! ++matchcol; /* search for a match at next column */ | |
35 | goto skip; | |
36 | } | |
37 | ||
38 | --- 3812,3823 ---- | |
39 | && regmatch.endpos[0].lnum == 0 | |
40 | && matchcol == regmatch.endpos[0].col) | |
41 | { | |
42 | ! if (sub_firstline[matchcol] == NUL) | |
43 | ! /* We already were at the end of the line. Don't look | |
44 | ! * for a match in this line again. */ | |
45 | ! skip_match = TRUE; | |
46 | ! else | |
47 | ! ++matchcol; /* search for a match at next column */ | |
48 | goto skip; | |
49 | } | |
50 | ||
51 | *************** | |
52 | *** 4103,4111 **** | |
53 | /* We already know that we did the last subst when we are at | |
54 | * the end of the line, except that a pattern like | |
55 | * "bar\|\nfoo" may match at the NUL. */ | |
56 | ! lastone = ((sub_firstline[matchcol] == NUL && nmatch <= 1 | |
57 | ! && !re_multiline(regmatch.regprog)) | |
58 | ! || got_int || got_quit || !(do_all || do_again)); | |
59 | nmatch = -1; | |
60 | ||
61 | /* | |
62 | --- 4109,4120 ---- | |
63 | /* We already know that we did the last subst when we are at | |
64 | * the end of the line, except that a pattern like | |
65 | * "bar\|\nfoo" may match at the NUL. */ | |
66 | ! lastone = (skip_match | |
67 | ! || got_int | |
68 | ! || got_quit | |
69 | ! || !(do_all || do_again) | |
70 | ! || (sub_firstline[matchcol] == NUL && nmatch <= 1 | |
71 | ! && !re_multiline(regmatch.regprog))); | |
72 | nmatch = -1; | |
73 | ||
74 | /* | |
75 | *** ../vim-6.3.011/src/version.c Fri Jul 2 22:00:36 2004 | |
76 | --- src/version.c Tue Jul 6 14:56:13 2004 | |
77 | *************** | |
78 | *** 643,644 **** | |
79 | --- 643,646 ---- | |
80 | { /* Add new patch number below this line */ | |
81 | + /**/ | |
82 | + 12, | |
83 | /**/ | |
84 | ||
85 | -- | |
86 | Kisses may last for as much as, but no more than, five minutes. | |
87 | [real standing law in Iowa, United States of America] | |
88 | ||
89 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | |
90 | /// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | |
91 | \\\ Project leader for A-A-P -- http://www.A-A-P.org /// | |
92 | \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html /// |