summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2015-12-17 15:07:32 +0100
committerBram Moolenaar <Bram@vim.org>2015-12-17 15:07:32 +0100
commit75e3ad019933f4879137775549261bf51985ab7d (patch)
treea2801d543c4b0595957f818ce3d4d3cc2a845e85
parentf29a82dcd0914c76f595d475ddac4517371fab2b (diff)
patch 7.4.975v7.4.975
Problem: Using ":sort" on a very big file sometimes causes text to be corrupted. (John Beckett) Solution: Copy the line into a buffer before calling ml_append().
-rw-r--r--src/ex_cmds.c7
-rw-r--r--src/version.c2
2 files changed, 6 insertions, 3 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index c2b600c5b6..05d4721d62 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -540,10 +540,11 @@ ex_sort(eap)
if (!unique || i == 0
|| (sort_ic ? STRICMP(s, sortbuf1) : STRCMP(s, sortbuf1)) != 0)
{
- if (ml_append(lnum++, s, (colnr_T)0, FALSE) == FAIL)
+ /* Copy the line into a buffer, it may become invalid in
+ * ml_append(). And it's needed for "unique". */
+ STRCPY(sortbuf1, s);
+ if (ml_append(lnum++, sortbuf1, (colnr_T)0, FALSE) == FAIL)
break;
- if (unique)
- STRCPY(sortbuf1, s);
}
fast_breakcheck();
if (got_int)
diff --git a/src/version.c b/src/version.c
index 899e27f493..f7a4a20454 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 975,
+/**/
974,
/**/
973,