]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.265 v7.3.265
authorBram Moolenaar <Bram@vim.org>
Wed, 27 Jul 2011 15:58:46 +0000 (17:58 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 27 Jul 2011 15:58:46 +0000 (17:58 +0200)
Problem:    When storing a pattern in search history there is no proper check
            for the separator character.
Solution:   Pass the separator character to in_history(). (Muraoka Taro)

src/ex_getln.c
src/version.c

index 913d9830eda03fef52df1c2956fd26ae5cd4e8cd..ed0082c1321d65d308cf0a890b6084a905194844 100644 (file)
@@ -67,7 +67,7 @@ static int    hislen = 0;             /* actual length of history tables */
 
 static int     hist_char2type __ARGS((int c));
 
-static int     in_history __ARGS((int, char_u *, int));
+static int     in_history __ARGS((int, char_u *, int, int));
 # ifdef FEAT_EVAL
 static int     calc_hist_idx __ARGS((int histype, int num));
 # endif
@@ -5289,13 +5289,15 @@ init_history()
  * If 'move_to_front' is TRUE, matching entry is moved to end of history.
  */
     static int
-in_history(type, str, move_to_front)
+in_history(type, str, move_to_front, sep)
     int            type;
     char_u  *str;
     int            move_to_front;      /* Move the entry to the front if it exists */
+    int            sep;
 {
     int            i;
     int            last_i = -1;
+    char_u  *p;
 
     if (hisidx[type] < 0)
        return FALSE;
@@ -5304,7 +5306,12 @@ in_history(type, str, move_to_front)
     {
        if (history[type][i].hisstr == NULL)
            return FALSE;
-       if (STRCMP(str, history[type][i].hisstr) == 0)
+
+       /* For search history, check that the separator character matches as
+        * well. */
+       p = history[type][i].hisstr;
+       if (STRCMP(str, p) == 0
+               && (type != HIST_SEARCH || sep == p[STRLEN(p) + 1]))
        {
            if (!move_to_front)
                return TRUE;
@@ -5398,7 +5405,7 @@ add_to_history(histype, new_entry, in_map, sep)
        }
        last_maptick = -1;
     }
-    if (!in_history(histype, new_entry, TRUE))
+    if (!in_history(histype, new_entry, TRUE, sep))
     {
        if (++hisidx[histype] == hislen)
            hisidx[histype] = 0;
@@ -5977,7 +5984,7 @@ read_viminfo_history(virp)
        if (val != NULL && *val != NUL)
        {
            if (!in_history(type, val + (type == HIST_SEARCH),
-                                                       viminfo_add_at_front))
+                                                 viminfo_add_at_front, *val))
            {
                /* Need to re-allocate to append the separator byte. */
                len = STRLEN(val);
index dbd76b35483125ef68687b561d162cf232b679fc..525484774e333c3e7450eb5be7f1f19d62155dea 100644 (file)
@@ -709,6 +709,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    265,
 /**/
     264,
 /**/