]> granicus.if.org Git - vim/commitdiff
updated for version 7.0-195 v7.0.195
authorBram Moolenaar <Bram@vim.org>
Tue, 13 Feb 2007 05:19:30 +0000 (05:19 +0000)
committerBram Moolenaar <Bram@vim.org>
Tue, 13 Feb 2007 05:19:30 +0000 (05:19 +0000)
src/ex_cmds2.c
src/version.c

index 6396ee115e6547d576c2b5c9af1256e82f35460e..e5e1f65c6d33630cb75b0651f7f7044f4eed9884 100644 (file)
@@ -1242,14 +1242,22 @@ autowrite(buf, forceit)
     buf_T      *buf;
     int                forceit;
 {
+    int                r;
+
     if (!(p_aw || p_awa) || !p_write
 #ifdef FEAT_QUICKFIX
-       /* never autowrite a "nofile" or "nowrite" buffer */
-       || bt_dontwrite(buf)
+           /* never autowrite a "nofile" or "nowrite" buffer */
+           || bt_dontwrite(buf)
 #endif
-       || (!forceit && buf->b_p_ro) || buf->b_ffname == NULL)
+           || (!forceit && buf->b_p_ro) || buf->b_ffname == NULL)
        return FAIL;
-    return buf_write_all(buf, forceit);
+    r = buf_write_all(buf, forceit);
+
+    /* Writing may succeed but the buffer still changed, e.g., when there is a
+     * conversion error.  We do want to return FAIL then. */
+    if (buf_valid(buf) && bufIsChanged(buf))
+       r = FAIL;
+    return r;
 }
 
 /*
@@ -1472,6 +1480,8 @@ check_changed_any(hidden)
        if (buf == NULL)    /* No buffers changed */
            return FALSE;
 
+       /* Try auto-writing the buffer.  If this fails but the buffer no
+        * longer exists it's not changed, that's OK. */
        if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf))
            break;          /* didn't save - still changes */
     }
index 0c45c476b8fda948a0cdacd125c4154a3cf60793..d60f52d02d70d8efeb5d0b4008f3738e97dc9314 100644 (file)
@@ -666,6 +666,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    195,
 /**/
     194,
 /**/