From: Bram Moolenaar Date: Thu, 17 Dec 2015 14:07:32 +0000 (+0100) Subject: patch 7.4.975 X-Git-Tag: v7.4.975 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=75e3ad019933f4879137775549261bf51985ab7d;p=vim patch 7.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(). --- diff --git a/src/ex_cmds.c b/src/ex_cmds.c index c2b600c5b..05d4721d6 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 899e27f49..f7a4a2045 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 975, /**/ 974, /**/