Mirror of the Vim source from https://github.com/vim/vim
Revision | 0358abf2b5d4ab5981a5a1dd651ecf63d40ffbfb (tree) |
---|---|
Time | 2008-06-15 21:21:50 |
Author | vimboss |
Commiter | vimboss |
updated for version 7.1-315
@@ -3044,6 +3044,7 @@ | ||
3044 | 3044 | { |
3045 | 3045 | regsave_T save_after; |
3046 | 3046 | regsave_T save_behind; |
3047 | + int save_need_clear_subexpr; | |
3047 | 3048 | save_se_T save_start[NSUBEXP]; |
3048 | 3049 | save_se_T save_end[NSUBEXP]; |
3049 | 3050 | } regbehind_T; |
@@ -5858,17 +5859,23 @@ | ||
5858 | 5859 | { |
5859 | 5860 | int i; |
5860 | 5861 | |
5861 | - for (i = 0; i < NSUBEXP; ++i) | |
5862 | + /* When "need_clear_subexpr" is set we don't need to save the values, only | |
5863 | + * remember that this flag needs to be set again when restoring. */ | |
5864 | + bp->save_need_clear_subexpr = need_clear_subexpr; | |
5865 | + if (!need_clear_subexpr) | |
5862 | 5866 | { |
5863 | - if (REG_MULTI) | |
5867 | + for (i = 0; i < NSUBEXP; ++i) | |
5864 | 5868 | { |
5865 | - bp->save_start[i].se_u.pos = reg_startpos[i]; | |
5866 | - bp->save_end[i].se_u.pos = reg_endpos[i]; | |
5867 | - } | |
5868 | - else | |
5869 | - { | |
5870 | - bp->save_start[i].se_u.ptr = reg_startp[i]; | |
5871 | - bp->save_end[i].se_u.ptr = reg_endp[i]; | |
5869 | + if (REG_MULTI) | |
5870 | + { | |
5871 | + bp->save_start[i].se_u.pos = reg_startpos[i]; | |
5872 | + bp->save_end[i].se_u.pos = reg_endpos[i]; | |
5873 | + } | |
5874 | + else | |
5875 | + { | |
5876 | + bp->save_start[i].se_u.ptr = reg_startp[i]; | |
5877 | + bp->save_end[i].se_u.ptr = reg_endp[i]; | |
5878 | + } | |
5872 | 5879 | } |
5873 | 5880 | } |
5874 | 5881 | } |
@@ -5882,17 +5889,22 @@ | ||
5882 | 5889 | { |
5883 | 5890 | int i; |
5884 | 5891 | |
5885 | - for (i = 0; i < NSUBEXP; ++i) | |
5892 | + /* Only need to restore saved values when they are not to be cleared. */ | |
5893 | + need_clear_subexpr = bp->save_need_clear_subexpr; | |
5894 | + if (!need_clear_subexpr) | |
5886 | 5895 | { |
5887 | - if (REG_MULTI) | |
5896 | + for (i = 0; i < NSUBEXP; ++i) | |
5888 | 5897 | { |
5889 | - reg_startpos[i] = bp->save_start[i].se_u.pos; | |
5890 | - reg_endpos[i] = bp->save_end[i].se_u.pos; | |
5891 | - } | |
5892 | - else | |
5893 | - { | |
5894 | - reg_startp[i] = bp->save_start[i].se_u.ptr; | |
5895 | - reg_endp[i] = bp->save_end[i].se_u.ptr; | |
5898 | + if (REG_MULTI) | |
5899 | + { | |
5900 | + reg_startpos[i] = bp->save_start[i].se_u.pos; | |
5901 | + reg_endpos[i] = bp->save_end[i].se_u.pos; | |
5902 | + } | |
5903 | + else | |
5904 | + { | |
5905 | + reg_startp[i] = bp->save_start[i].se_u.ptr; | |
5906 | + reg_endp[i] = bp->save_end[i].se_u.ptr; | |
5907 | + } | |
5896 | 5908 | } |
5897 | 5909 | } |
5898 | 5910 | } |
@@ -667,6 +667,8 @@ | ||
667 | 667 | static int included_patches[] = |
668 | 668 | { /* Add new patch number below this line */ |
669 | 669 | /**/ |
670 | + 315, | |
671 | +/**/ | |
670 | 672 | 314, |
671 | 673 | /**/ |
672 | 674 | 313, |