From: Bram Moolenaar Date: Wed, 27 Jul 2011 15:58:46 +0000 (+0200) Subject: updated for version 7.3.265 X-Git-Tag: v7.3.265 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4c402236492052e0b6b1ba555450aafe82da8875;p=vim updated for version 7.3.265 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) --- diff --git a/src/ex_getln.c b/src/ex_getln.c index 913d9830e..ed0082c13 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -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); diff --git a/src/version.c b/src/version.c index dbd76b354..525484774 100644 --- a/src/version.c +++ b/src/version.c @@ -709,6 +709,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 265, /**/ 264, /**/