updated for version 7.0f02
diff --git a/src/buffer.c b/src/buffer.c
index 7d625f2..6a7fa2f 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2635,8 +2635,11 @@
     {
 	vim_free(buf->b_sfname);
 	vim_free(buf->b_ffname);
-	buf->b_sfname = vim_strsave(name);
-	buf->b_ffname = FullName_save(buf->b_sfname, FALSE);
+	buf->b_ffname = vim_strsave(name);
+	buf->b_sfname = NULL;
+	/* Allocate ffname and expand into full path.  Also resolves .lnk
+	 * files on Win32. */
+	fname_expand(buf, &buf->b_ffname, &buf->b_sfname);
 	buf->b_fname = buf->b_sfname;
     }
 }
@@ -4187,11 +4190,11 @@
 #ifdef FEAT_SHORTCUT
     if (!buf->b_p_bin)
     {
-	char_u  *rfname = NULL;
+	char_u  *rfname;
 
 	/* If the file name is a shortcut file, use the file it links to. */
 	rfname = mch_resolve_shortcut(*ffname);
-	if (rfname)
+	if (rfname != NULL)
 	{
 	    vim_free(*ffname);
 	    *ffname = rfname;