diff -r b803b2776880 src/fileio.c
--- a/src/fileio.c	Tue Nov 16 19:26:02 2010 +0100
+++ b/src/fileio.c	Tue Nov 16 21:31:39 2010 -0500
@@ -6120,12 +6120,13 @@
 		    || buf->b_sfname == NULL
 		    || mch_isFullName(buf->b_sfname)))
 	{
-	    vim_free(buf->b_sfname);
-	    buf->b_sfname = NULL;
 	    p = shorten_fname(buf->b_ffname, dirname);
 	    if (p != NULL)
 	    {
-		buf->b_sfname = vim_strsave(p);
+		if (buf->b_sfname == NULL)
+		    buf->b_sfname = vim_strsave(p);
+		else
+		    STRCPY(buf->b_sfname, p);
 		buf->b_fname = buf->b_sfname;
 	    }
 	    if (p == NULL || buf->b_fname == NULL)
