diff src/memline.c @ 15267:762fccd84b7c v8.1.0642

patch 8.1.0642: swapinfo() leaks memory commit https://github.com/vim/vim/commit/e6fdf79980c0f2856700d4f46de700293f477429 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Dec 26 22:57:42 2018 +0100 patch 8.1.0642: swapinfo() leaks memory Problem: swapinfo() leaks memory. Solution: Avoid allocating the strings twice.
author Bram Moolenaar <Bram@vim.org>
date Wed, 26 Dec 2018 23:00:06 +0100
parents 19e79a1ed6b6
children 27783a6f430b
line wrap: on
line diff
--- a/src/memline.c
+++ b/src/memline.c
@@ -2055,21 +2055,16 @@ get_b0_dict(char_u *fname, dict_T *d)
 	if (read_eintr(fd, &b0, sizeof(b0)) == sizeof(b0))
 	{
 	    if (ml_check_b0_id(&b0) == FAIL)
-		dict_add_string(d, "error",
-			       vim_strsave((char_u *)"Not a swap file"));
+		dict_add_string(d, "error", (char_u *)"Not a swap file");
 	    else if (b0_magic_wrong(&b0))
-		dict_add_string(d, "error",
-			       vim_strsave((char_u *)"Magic number mismatch"));
+		dict_add_string(d, "error", (char_u *)"Magic number mismatch");
 	    else
 	    {
 		/* we have swap information */
-		dict_add_string(d, "version", vim_strnsave(b0.b0_version, 10));
-		dict_add_string(d, "user",
-				     vim_strnsave(b0.b0_uname, B0_UNAME_SIZE));
-		dict_add_string(d, "host",
-				     vim_strnsave(b0.b0_hname, B0_HNAME_SIZE));
-		dict_add_string(d, "fname",
-				 vim_strnsave(b0.b0_fname, B0_FNAME_SIZE_ORG));
+		dict_add_string_len(d, "version", b0.b0_version, 10);
+		dict_add_string_len(d, "user", b0.b0_uname, B0_UNAME_SIZE);
+		dict_add_string_len(d, "host", b0.b0_hname, B0_HNAME_SIZE);
+		dict_add_string_len(d, "fname", b0.b0_fname, B0_FNAME_SIZE_ORG);
 
 		dict_add_number(d, "pid", char_to_long(b0.b0_pid));
 		dict_add_number(d, "mtime", char_to_long(b0.b0_mtime));
@@ -2080,12 +2075,11 @@ get_b0_dict(char_u *fname, dict_T *d)
 	    }
 	}
 	else
-	    dict_add_string(d, "error",
-				    vim_strsave((char_u *)"Cannot read file"));
+	    dict_add_string(d, "error", (char_u *)"Cannot read file");
 	close(fd);
     }
     else
-	dict_add_string(d, "error", vim_strsave((char_u *)"Cannot open file"));
+	dict_add_string(d, "error", (char_u *)"Cannot open file");
 }
 #endif