aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorPaul Eggert2016-04-04 17:04:58 -0700
committerPaul Eggert2016-04-04 17:05:19 -0700
commitb4c7869e5e1bb0bb33379b25ff830e721761a7bf (patch)
tree07b81f9711ea7188421c2ac2303b442778b6c980 /src/buffer.c
parent3c623c26ae7d695746e05d8a2e16a67a6256b024 (diff)
downloademacs-b4c7869e5e1bb0bb33379b25ff830e721761a7bf.tar.gz
emacs-b4c7869e5e1bb0bb33379b25ff830e721761a7bf.zip
Prefer AUTO_STRING_WITH_LEN to make_formatted_string
* src/buffer.c (Fgenerate_new_buffer_name): * src/filelock.c (get_boot_time): * src/minibuf.c (get_minibuffer): * src/process.c (make_process): * src/xdisp.c (ensure_echo_area_buffers): Prefer AUTO_STRING_WITH_LEN + sprintf to make_formatted_string when either will do.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c46
1 files changed, 19 insertions, 27 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 62b0bc8c6f4..0e5e64f58a1 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1051,44 +1051,36 @@ it is in the sequence to be tried) even if a buffer with that name exists.
1051If NAME begins with a space (i.e., a buffer that is not normally 1051If NAME begins with a space (i.e., a buffer that is not normally
1052visible to users), then if buffer NAME already exists a random number 1052visible to users), then if buffer NAME already exists a random number
1053is first appended to NAME, to speed up finding a non-existent buffer. */) 1053is first appended to NAME, to speed up finding a non-existent buffer. */)
1054 (register Lisp_Object name, Lisp_Object ignore) 1054 (Lisp_Object name, Lisp_Object ignore)
1055{ 1055{
1056 register Lisp_Object gentemp, tem, tem2; 1056 Lisp_Object genbase;
1057 ptrdiff_t count;
1058 char number[INT_BUFSIZE_BOUND (ptrdiff_t) + sizeof "<>"];
1059 1057
1060 CHECK_STRING (name); 1058 CHECK_STRING (name);
1061 1059
1062 tem = Fstring_equal (name, ignore); 1060 if (!NILP (Fstring_equal (name, ignore)) || NILP (Fget_buffer (name)))
1063 if (!NILP (tem))
1064 return name;
1065 tem = Fget_buffer (name);
1066 if (NILP (tem))
1067 return name; 1061 return name;
1068 1062
1069 if (!strncmp (SSDATA (name), " ", 1)) /* see bug#1229 */ 1063 if (SREF (name, 0) != ' ') /* See bug#1229. */
1064 genbase = name;
1065 else
1070 { 1066 {
1071 /* Note fileio.c:make_temp_name does random differently. */ 1067 /* Note fileio.c:make_temp_name does random differently. */
1072 tem2 = concat2 (name, make_formatted_string 1068 char number[sizeof "-999999"];
1073 (number, "-%"pI"d", 1069 int i = XFASTINT (Frandom (make_number (999999)));
1074 XFASTINT (Frandom (make_number (999999))))); 1070 AUTO_STRING_WITH_LEN (lnumber, number, sprintf (number, "-%d", i));
1075 tem = Fget_buffer (tem2); 1071 genbase = concat2 (name, lnumber);
1076 if (NILP (tem)) 1072 if (NILP (Fget_buffer (genbase)))
1077 return tem2; 1073 return genbase;
1078 } 1074 }
1079 else
1080 tem2 = name;
1081 1075
1082 count = 1; 1076 for (ptrdiff_t count = 1; ; count++)
1083 while (1)
1084 { 1077 {
1085 gentemp = concat2 (tem2, make_formatted_string 1078 char number[INT_BUFSIZE_BOUND (ptrdiff_t) + sizeof "<>"];
1086 (number, "<%"pD"d>", ++count)); 1079 AUTO_STRING_WITH_LEN (lnumber, number,
1087 tem = Fstring_equal (gentemp, ignore); 1080 sprintf (number, "<%"pD"d>", count));
1088 if (!NILP (tem)) 1081 Lisp_Object gentemp = concat2 (genbase, lnumber);
1089 return gentemp; 1082 if (!NILP (Fstring_equal (gentemp, ignore))
1090 tem = Fget_buffer (gentemp); 1083 || NILP (Fget_buffer (gentemp)))
1091 if (NILP (tem))
1092 return gentemp; 1084 return gentemp;
1093 } 1085 }
1094} 1086}