# HG changeset patch # User vimboss # Date 1248858675 0 # Node ID 96276cc11d8e68ee320e0f61e20406dcb7a0b995 # Parent fe26299d6f7015c324bef3829e9ecdf7d08526df updated for version 7.2-240 diff --git a/src/gui.c b/src/gui.c --- a/src/gui.c +++ b/src/gui.c @@ -5004,6 +5004,19 @@ gui_do_findrepl(flags, find_text, repl_t char_u *p; regmatch_T regmatch; int save_did_emsg = did_emsg; + static int busy = FALSE; + + /* When the screen is being updated we should not change buffers and + * windows structures, it may cause freed memory to be used. Also don't + * do this recursively (pressing "Find" quickly several times. */ + if (updating_screen || busy) + return FALSE; + + /* refuse replace when text cannot be changed */ + if ((type == FRD_REPLACE || type == FRD_REPLACEALL) && text_locked()) + return FALSE; + + busy = TRUE; ga_init2(&ga, 1, 100); if (type == FRD_REPLACEALL) @@ -5094,6 +5107,7 @@ gui_do_findrepl(flags, find_text, repl_t } vim_free(ga.ga_data); + busy = FALSE; return (ga.ga_len > 0); } diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -677,6 +677,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 240, +/**/ 239, /**/ 238,