aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2011-11-28 00:20:58 -0800
committerPaul Eggert2011-11-28 00:20:58 -0800
commitdbf312256d8a8c731dadaf27c1260832a3796350 (patch)
treee24d4b7c814d5f292c779b192371cb7475b0eef6 /src
parente95def75e4a3fae3f5671cc828012388f0e251f5 (diff)
downloademacs-dbf312256d8a8c731dadaf27c1260832a3796350.tar.gz
emacs-dbf312256d8a8c731dadaf27c1260832a3796350.zip
Remove GCPRO-related macros that exist only to avoid shadowing locals.
* lisp.h (GCPRO1_VAR, GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR, GCPRO5_VAR) (GCPRO6_VAR, UNGCPRO_VAR): Remove. See <http://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>. All uses changed to use GCPRO1 etc. (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6, UNGCPRO): Revert to old implementation (i.e., before 2011-03-11).
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog10
-rw-r--r--src/dired.c18
-rw-r--r--src/keyboard.c14
-rw-r--r--src/lisp.h228
-rw-r--r--src/process.c10
-rw-r--r--src/xfns.c12
6 files changed, 143 insertions, 149 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 83b625d279e..915e0659a0e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,13 @@
12011-11-28 Paul Eggert <eggert@cs.ucla.edu>
2
3 Remove GCPRO-related macros that exist only to avoid shadowing locals.
4 * lisp.h (GCPRO1_VAR, GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR, GCPRO5_VAR)
5 (GCPRO6_VAR, UNGCPRO_VAR): Remove. See
6 <http://lists.gnu.org/archive/html/emacs-diffs/2011-11/msg00265.html>.
7 All uses changed to use GCPRO1 etc.
8 (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6, UNGCPRO):
9 Revert to old implementation (i.e., before 2011-03-11).
10
12011-11-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 112011-11-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2 12
3 * dispnew.c (scrolling_window): Truncate overlaps in copy destination 13 * dispnew.c (scrolling_window): Truncate overlaps in copy destination
diff --git a/src/dired.c b/src/dired.c
index acc81a6ed9d..2b5f3b40641 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -229,11 +229,11 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full, Lisp_Object m
229 int len; 229 int len;
230 int wanted = 0; 230 int wanted = 0;
231 Lisp_Object name, finalname; 231 Lisp_Object name, finalname;
232 struct gcpro inner_gcpro1, inner_gcpro2; 232 struct gcpro gcpro1, gcpro2;
233 233
234 len = NAMLEN (dp); 234 len = NAMLEN (dp);
235 name = finalname = make_unibyte_string (dp->d_name, len); 235 name = finalname = make_unibyte_string (dp->d_name, len);
236 GCPRO2_VAR (finalname, name, inner_gcpro); 236 GCPRO2 (finalname, name);
237 237
238 /* Note: DECODE_FILE can GC; it should protect its argument, 238 /* Note: DECODE_FILE can GC; it should protect its argument,
239 though. */ 239 though. */
@@ -289,23 +289,23 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full, Lisp_Object m
289 /* Construct an expanded filename for the directory entry. 289 /* Construct an expanded filename for the directory entry.
290 Use the decoded names for input to Ffile_attributes. */ 290 Use the decoded names for input to Ffile_attributes. */
291 Lisp_Object decoded_fullname, fileattrs; 291 Lisp_Object decoded_fullname, fileattrs;
292 struct gcpro innermost_gcpro1, innermost_gcpro2; 292 struct gcpro gcpro1, gcpro2;
293 293
294 decoded_fullname = fileattrs = Qnil; 294 decoded_fullname = fileattrs = Qnil;
295 GCPRO2_VAR (decoded_fullname, fileattrs, innermost_gcpro); 295 GCPRO2 (decoded_fullname, fileattrs);
296 296
297 /* Both Fexpand_file_name and Ffile_attributes can GC. */ 297 /* Both Fexpand_file_name and Ffile_attributes can GC. */
298 decoded_fullname = Fexpand_file_name (name, directory); 298 decoded_fullname = Fexpand_file_name (name, directory);
299 fileattrs = Ffile_attributes (decoded_fullname, id_format); 299 fileattrs = Ffile_attributes (decoded_fullname, id_format);
300 300
301 list = Fcons (Fcons (finalname, fileattrs), list); 301 list = Fcons (Fcons (finalname, fileattrs), list);
302 UNGCPRO_VAR (innermost_gcpro); 302 UNGCPRO;
303 } 303 }
304 else 304 else
305 list = Fcons (finalname, list); 305 list = Fcons (finalname, list);
306 } 306 }
307 307
308 UNGCPRO_VAR (inner_gcpro); 308 UNGCPRO;
309 } 309 }
310 } 310 }
311 311
@@ -673,11 +673,11 @@ file_name_completion (Lisp_Object file, Lisp_Object dirname, int all_flag, int v
673 if (!NILP (predicate)) 673 if (!NILP (predicate))
674 { 674 {
675 Lisp_Object val; 675 Lisp_Object val;
676 struct gcpro inner_gcpro1; 676 struct gcpro gcpro1;
677 677
678 GCPRO1_VAR (name, inner_gcpro); 678 GCPRO1 (name);
679 val = call1 (predicate, name); 679 val = call1 (predicate, name);
680 UNGCPRO_VAR (inner_gcpro); 680 UNGCPRO;
681 681
682 if (NILP (val)) 682 if (NILP (val))
683 continue; 683 continue;
diff --git a/src/keyboard.c b/src/keyboard.c
index 9b4ba427c24..e74c7ca1c68 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -2998,7 +2998,7 @@ read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps,
2998 { 2998 {
2999 Lisp_Object keys; 2999 Lisp_Object keys;
3000 int key_count, key_count_reset; 3000 int key_count, key_count_reset;
3001 struct gcpro inner_gcpro1; 3001 struct gcpro gcpro1;
3002 int count = SPECPDL_INDEX (); 3002 int count = SPECPDL_INDEX ();
3003 3003
3004 /* Save the echo status. */ 3004 /* Save the echo status. */
@@ -3026,7 +3026,7 @@ read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps,
3026 keys = Fcopy_sequence (this_command_keys); 3026 keys = Fcopy_sequence (this_command_keys);
3027 else 3027 else
3028 keys = Qnil; 3028 keys = Qnil;
3029 GCPRO1_VAR (keys, inner_gcpro); 3029 GCPRO1 (keys);
3030 3030
3031 /* Clear out this_command_keys. */ 3031 /* Clear out this_command_keys. */
3032 this_command_key_count = 0; 3032 this_command_key_count = 0;
@@ -3064,7 +3064,7 @@ read_char (int commandflag, ptrdiff_t nmaps, Lisp_Object *maps,
3064 if (saved_immediate_echo) 3064 if (saved_immediate_echo)
3065 echo_now (); 3065 echo_now ();
3066 3066
3067 UNGCPRO_VAR (inner_gcpro); 3067 UNGCPRO;
3068 3068
3069 /* The input method can return no events. */ 3069 /* The input method can return no events. */
3070 if (! CONSP (tem)) 3070 if (! CONSP (tem))
@@ -9053,9 +9053,9 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9053 int junk; 9053 int junk;
9054#endif 9054#endif
9055 9055
9056 struct gcpro outer_gcpro1; 9056 struct gcpro gcpro1;
9057 9057
9058 GCPRO1_VAR (fake_prefixed_keys, outer_gcpro); 9058 GCPRO1 (fake_prefixed_keys);
9059 raw_keybuf_count = 0; 9059 raw_keybuf_count = 0;
9060 9060
9061 last_nonmenu_event = Qnil; 9061 last_nonmenu_event = Qnil;
@@ -9351,7 +9351,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
9351 if (EQ (key, Qt)) 9351 if (EQ (key, Qt))
9352 { 9352 {
9353 unbind_to (count, Qnil); 9353 unbind_to (count, Qnil);
9354 UNGCPRO_VAR (outer_gcpro); 9354 UNGCPRO;
9355 return -1; 9355 return -1;
9356 } 9356 }
9357 9357
@@ -10049,7 +10049,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
10049 add_command_key (keybuf[t]); 10049 add_command_key (keybuf[t]);
10050 } 10050 }
10051 10051
10052 UNGCPRO_VAR (outer_gcpro); 10052 UNGCPRO;
10053 return t; 10053 return t;
10054} 10054}
10055 10055
diff --git a/src/lisp.h b/src/lisp.h
index 5735c207241..e645fbd65a5 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2223,143 +2223,127 @@ struct gcpro
2223 || GC_MARK_STACK == GC_MARK_STACK_CHECK_GCPROS) 2223 || GC_MARK_STACK == GC_MARK_STACK_CHECK_GCPROS)
2224 2224
2225 2225
2226#define GCPRO1(var) \
2227 GCPRO1_VAR (var, gcpro)
2228#define GCPRO2(var1, var2) \
2229 GCPRO2_VAR (var1, var2, gcpro)
2230#define GCPRO3(var1, var2, var3) \
2231 GCPRO3_VAR (var1, var2, var3, gcpro)
2232#define GCPRO4(var1, var2, var3, var4) \
2233 GCPRO4_VAR (var1, var2, var3, var4, gcpro)
2234#define GCPRO5(var1, var2, var3, var4, var5) \
2235 GCPRO5_VAR (var1, var2, var3, var4, var5, gcpro)
2236#define GCPRO6(var1, var2, var3, var4, var5, var6) \
2237 GCPRO6_VAR (var1, var2, var3, var4, var5, var6, gcpro)
2238#define UNGCPRO UNGCPRO_VAR (gcpro)
2239
2240#if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS 2226#if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS
2241 2227
2242/* Do something silly with gcproN vars just so gcc shuts up. */ 2228/* Do something silly with gcproN vars just so gcc shuts up. */
2243/* You get warnings from MIPSPro... */ 2229/* You get warnings from MIPSPro... */
2244 2230
2245#define GCPRO1_VAR(var, gcpro) ((void) gcpro##1) 2231#define GCPRO1(varname) ((void) gcpro1)
2246#define GCPRO2_VAR(var1, var2, gcpro) \ 2232#define GCPRO2(varname1, varname2) ((void) gcpro2, (void) gcpro1)
2247 ((void) gcpro##2, (void) gcpro##1) 2233#define GCPRO3(varname1, varname2, varname3) \
2248#define GCPRO3_VAR(var1, var2, var3, gcpro) \ 2234 ((void) gcpro3, (void) gcpro2, (void) gcpro1)
2249 ((void) gcpro##3, (void) gcpro##2, (void) gcpro##1) 2235#define GCPRO4(varname1, varname2, varname3, varname4) \
2250#define GCPRO4_VAR(var1, var2, var3, var4, gcpro) \ 2236 ((void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1)
2251 ((void) gcpro##4, (void) gcpro##3, (void) gcpro##2, (void) gcpro##1) 2237#define GCPRO5(varname1, varname2, varname3, varname4, varname5) \
2252#define GCPRO5_VAR(var1, var2, var3, var4, var5, gcpro) \ 2238 ((void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1)
2253 ((void) gcpro##5, (void) gcpro##4, (void) gcpro##3, (void) gcpro##2, \ 2239#define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \
2254 (void) gcpro##1) 2240 ((void) gcpro6, (void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, \
2255#define GCPRO6_VAR(var1, var2, var3, var4, var5, var6, gcpro) \ 2241 (void) gcpro1)
2256 ((void) gcpro##6, (void) gcpro##5, (void) gcpro##4, (void) gcpro##3, \ 2242#define UNGCPRO ((void) 0)
2257 (void) gcpro##2, (void) gcpro##1)
2258#define UNGCPRO_VAR(gcpro) ((void) 0)
2259 2243
2260#else /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ 2244#else /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */
2261 2245
2262#ifndef DEBUG_GCPRO 2246#ifndef DEBUG_GCPRO
2263 2247
2264#define GCPRO1_VAR(var1, gcpro) \ 2248#define GCPRO1(varname) \
2265 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2249 {gcpro1.next = gcprolist; gcpro1.var = &varname; gcpro1.nvars = 1; \
2266 gcprolist = &gcpro##1; } 2250 gcprolist = &gcpro1; }
2267 2251
2268#define GCPRO2_VAR(var1, var2, gcpro) \ 2252#define GCPRO2(varname1, varname2) \
2269 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2253 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
2270 gcpro##2 .next = &gcpro##1; gcpro##2 .var = &var2; gcpro##2 .nvars = 1; \ 2254 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
2271 gcprolist = &gcpro##2; } 2255 gcprolist = &gcpro2; }
2272 2256
2273#define GCPRO3_VAR(var1, var2, var3, gcpro) \ 2257#define GCPRO3(varname1, varname2, varname3) \
2274 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2258 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
2275 gcpro##2 .next = &gcpro##1; gcpro##2 .var = &var2; gcpro##2 .nvars = 1; \ 2259 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
2276 gcpro##3 .next = &gcpro##2; gcpro##3 .var = &var3; gcpro##3 .nvars = 1; \ 2260 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
2277 gcprolist = &gcpro##3; } 2261 gcprolist = &gcpro3; }
2278 2262
2279#define GCPRO4_VAR(var1, var2, var3, var4, gcpro) \ 2263#define GCPRO4(varname1, varname2, varname3, varname4) \
2280 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2264 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
2281 gcpro##2 .next = &gcpro##1; gcpro##2 .var = &var2; gcpro##2 .nvars = 1; \ 2265 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
2282 gcpro##3 .next = &gcpro##2; gcpro##3 .var = &var3; gcpro##3 .nvars = 1; \ 2266 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
2283 gcpro##4 .next = &gcpro##3; gcpro##4 .var = &var4; gcpro##4 .nvars = 1; \ 2267 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
2284 gcprolist = &gcpro##4; } 2268 gcprolist = &gcpro4; }
2285 2269
2286#define GCPRO5_VAR(var1, var2, var3, var4, var5, gcpro) \ 2270#define GCPRO5(varname1, varname2, varname3, varname4, varname5) \
2287 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2271 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
2288 gcpro##2 .next = &gcpro##1; gcpro##2 .var = &var2; gcpro##2 .nvars = 1; \ 2272 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
2289 gcpro##3 .next = &gcpro##2; gcpro##3 .var = &var3; gcpro##3 .nvars = 1; \ 2273 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
2290 gcpro##4 .next = &gcpro##3; gcpro##4 .var = &var4; gcpro##4 .nvars = 1; \ 2274 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
2291 gcpro##5 .next = &gcpro##4; gcpro##5 .var = &var5; gcpro##5 .nvars = 1; \ 2275 gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
2292 gcprolist = &gcpro##5; } 2276 gcprolist = &gcpro5; }
2293 2277
2294#define GCPRO6_VAR(var1, var2, var3, var4, var5, var6, gcpro) \ 2278#define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \
2295 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2279 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
2296 gcpro##2 .next = &gcpro##1; gcpro##2 .var = &var2; gcpro##2 .nvars = 1; \ 2280 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
2297 gcpro##3 .next = &gcpro##2; gcpro##3 .var = &var3; gcpro##3 .nvars = 1; \ 2281 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
2298 gcpro##4 .next = &gcpro##3; gcpro##4 .var = &var4; gcpro##4 .nvars = 1; \ 2282 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
2299 gcpro##5 .next = &gcpro##4; gcpro##5 .var = &var5; gcpro##5 .nvars = 1; \ 2283 gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
2300 gcpro##6 .next = &gcpro##5; gcpro##6 .var = &var6; gcpro##6 .nvars = 1; \ 2284 gcpro6.next = &gcpro5; gcpro6.var = &varname6; gcpro6.nvars = 1; \
2301 gcprolist = &gcpro##6; } 2285 gcprolist = &gcpro6; }
2302 2286
2303#define UNGCPRO_VAR(gcpro) (gcprolist = gcpro##1 .next) 2287#define UNGCPRO (gcprolist = gcpro1.next)
2304 2288
2305#else 2289#else
2306 2290
2307extern int gcpro_level; 2291extern int gcpro_level;
2308 2292
2309#define GCPRO1_VAR(var1, gcpro) \ 2293#define GCPRO1(varname) \
2310 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2294 {gcpro1.next = gcprolist; gcpro1.var = &varname; gcpro1.nvars = 1; \
2311 gcpro##1 .level = gcpro_level++; \ 2295 gcpro1.level = gcpro_level++; \
2312 gcprolist = &gcpro##1; } 2296 gcprolist = &gcpro1; }
2313 2297
2314#define GCPRO2_VAR(var1, var2, gcpro) \ 2298#define GCPRO2(varname1, varname2) \
2315 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2299 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
2316 gcpro##1 .level = gcpro_level; \ 2300 gcpro1.level = gcpro_level; \
2317 gcpro##2 .next = &gcpro##1; gcpro##2 .var = &var2; gcpro##2 .nvars = 1; \ 2301 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
2318 gcpro##2 .level = gcpro_level++; \ 2302 gcpro2.level = gcpro_level++; \
2319 gcprolist = &gcpro##2; } 2303 gcprolist = &gcpro2; }
2320 2304
2321#define GCPRO3_VAR(var1, var2, var3, gcpro) \ 2305#define GCPRO3(varname1, varname2, varname3) \
2322 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2306 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
2323 gcpro##1 .level = gcpro_level; \ 2307 gcpro1.level = gcpro_level; \
2324 gcpro##2 .next = &gcpro##1; gcpro##2 .var = &var2; gcpro##2 .nvars = 1; \ 2308 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
2325 gcpro##3 .next = &gcpro##2; gcpro##3 .var = &var3; gcpro##3 .nvars = 1; \ 2309 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
2326 gcpro##3 .level = gcpro_level++; \ 2310 gcpro3.level = gcpro_level++; \
2327 gcprolist = &gcpro##3; } 2311 gcprolist = &gcpro3; }
2328 2312
2329#define GCPRO4_VAR(var1, var2, var3, var4, gcpro) \ 2313#define GCPRO4(varname1, varname2, varname3, varname4) \
2330 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2314 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
2331 gcpro##1 .level = gcpro_level; \ 2315 gcpro1.level = gcpro_level; \
2332 gcpro##2 .next = &gcpro##1; gcpro##2 .var = &var2; gcpro##2 .nvars = 1; \ 2316 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
2333 gcpro##3 .next = &gcpro##2; gcpro##3 .var = &var3; gcpro##3 .nvars = 1; \ 2317 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
2334 gcpro##4 .next = &gcpro##3; gcpro##4 .var = &var4; gcpro##4 .nvars = 1; \ 2318 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
2335 gcpro##4 .level = gcpro_level++; \ 2319 gcpro4.level = gcpro_level++; \
2336 gcprolist = &gcpro##4; } 2320 gcprolist = &gcpro4; }
2337 2321
2338#define GCPRO5_VAR(var1, var2, var3, var4, var5, gcpro) \ 2322#define GCPRO5(varname1, varname2, varname3, varname4, varname5) \
2339 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2323 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
2340 gcpro##1 .level = gcpro_level; \ 2324 gcpro1.level = gcpro_level; \
2341 gcpro##2 .next = &gcpro##1; gcpro##2 .var = &var2; gcpro##2 .nvars = 1; \ 2325 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
2342 gcpro##3 .next = &gcpro##2; gcpro##3 .var = &var3; gcpro##3 .nvars = 1; \ 2326 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
2343 gcpro##4 .next = &gcpro##3; gcpro##4 .var = &var4; gcpro##4 .nvars = 1; \ 2327 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
2344 gcpro##5 .next = &gcpro##4; gcpro##5 .var = &var5; gcpro##5 .nvars = 1; \ 2328 gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
2345 gcpro##5 .level = gcpro_level++; \ 2329 gcpro5.level = gcpro_level++; \
2346 gcprolist = &gcpro##5; } 2330 gcprolist = &gcpro5; }
2347 2331
2348#define GCPRO6_VAR(var1, var2, var3, var4, var5, var6, gcpro) \ 2332#define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \
2349 {gcpro##1 .next = gcprolist; gcpro##1 .var = &var1; gcpro##1 .nvars = 1; \ 2333 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
2350 gcpro##1 .level = gcpro_level; \ 2334 gcpro1.level = gcpro_level; \
2351 gcpro##2 .next = &gcpro##1; gcpro##2 .var = &var2; gcpro##2 .nvars = 1; \ 2335 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
2352 gcpro##3 .next = &gcpro##2; gcpro##3 .var = &var3; gcpro##3 .nvars = 1; \ 2336 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
2353 gcpro##4 .next = &gcpro##3; gcpro##4 .var = &var4; gcpro##4 .nvars = 1; \ 2337 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
2354 gcpro##5 .next = &gcpro##4; gcpro##5 .var = &var5; gcpro##5 .nvars = 1; \ 2338 gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
2355 gcpro##6 .next = &gcpro##5; gcpro##6 .var = &var6; gcpro##6 .nvars = 1; \ 2339 gcpro6.next = &gcpro5; gcpro6.var = &varname6; gcpro6.nvars = 1; \
2356 gcpro##6 .level = gcpro_level++; \ 2340 gcpro6.level = gcpro_level++; \
2357 gcprolist = &gcpro##6; } 2341 gcprolist = &gcpro6; }
2358 2342
2359#define UNGCPRO_VAR(gcpro) \ 2343#define UNGCPRO \
2360 ((--gcpro_level != gcpro##1 .level) \ 2344 ((--gcpro_level != gcpro1.level) \
2361 ? (abort (), 0) \ 2345 ? (abort (), 0) \
2362 : ((gcprolist = gcpro##1 .next), 0)) 2346 : ((gcprolist = gcpro1.next), 0))
2363 2347
2364#endif /* DEBUG_GCPRO */ 2348#endif /* DEBUG_GCPRO */
2365#endif /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ 2349#endif /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */
diff --git a/src/process.c b/src/process.c
index ba3eeb81614..05c4be27550 100644
--- a/src/process.c
+++ b/src/process.c
@@ -3474,7 +3474,7 @@ usage: (make-network-process &rest ARGS) */)
3474 3474
3475 { 3475 {
3476 /* Setup coding systems for communicating with the network stream. */ 3476 /* Setup coding systems for communicating with the network stream. */
3477 struct gcpro inner_gcpro1; 3477 struct gcpro gcpro1;
3478 /* Qt denotes we have not yet called Ffind_operation_coding_system. */ 3478 /* Qt denotes we have not yet called Ffind_operation_coding_system. */
3479 Lisp_Object coding_systems = Qt; 3479 Lisp_Object coding_systems = Qt;
3480 Lisp_Object fargs[5], val; 3480 Lisp_Object fargs[5], val;
@@ -3502,9 +3502,9 @@ usage: (make-network-process &rest ARGS) */)
3502 { 3502 {
3503 fargs[0] = Qopen_network_stream, fargs[1] = name, 3503 fargs[0] = Qopen_network_stream, fargs[1] = name,
3504 fargs[2] = buffer, fargs[3] = host, fargs[4] = service; 3504 fargs[2] = buffer, fargs[3] = host, fargs[4] = service;
3505 GCPRO1_VAR (proc, inner_gcpro); 3505 GCPRO1 (proc);
3506 coding_systems = Ffind_operation_coding_system (5, fargs); 3506 coding_systems = Ffind_operation_coding_system (5, fargs);
3507 UNGCPRO_VAR (inner_gcpro); 3507 UNGCPRO;
3508 } 3508 }
3509 if (CONSP (coding_systems)) 3509 if (CONSP (coding_systems))
3510 val = XCAR (coding_systems); 3510 val = XCAR (coding_systems);
@@ -3535,9 +3535,9 @@ usage: (make-network-process &rest ARGS) */)
3535 { 3535 {
3536 fargs[0] = Qopen_network_stream, fargs[1] = name, 3536 fargs[0] = Qopen_network_stream, fargs[1] = name,
3537 fargs[2] = buffer, fargs[3] = host, fargs[4] = service; 3537 fargs[2] = buffer, fargs[3] = host, fargs[4] = service;
3538 GCPRO1_VAR (proc, inner_gcpro); 3538 GCPRO1 (proc);
3539 coding_systems = Ffind_operation_coding_system (5, fargs); 3539 coding_systems = Ffind_operation_coding_system (5, fargs);
3540 UNGCPRO_VAR (inner_gcpro); 3540 UNGCPRO;
3541 } 3541 }
3542 } 3542 }
3543 if (CONSP (coding_systems)) 3543 if (CONSP (coding_systems))
diff --git a/src/xfns.c b/src/xfns.c
index c68149cce11..323b272e9f0 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -3166,7 +3166,7 @@ This function is an internal primitive--use `make-frame' instead. */)
3166 to get the color reference counts right, so initialize them! */ 3166 to get the color reference counts right, so initialize them! */
3167 { 3167 {
3168 Lisp_Object black; 3168 Lisp_Object black;
3169 struct gcpro inner_gcpro1; 3169 struct gcpro gcpro1;
3170 3170
3171 /* Function x_decode_color can signal an error. Make 3171 /* Function x_decode_color can signal an error. Make
3172 sure to initialize color slots so that we won't try 3172 sure to initialize color slots so that we won't try
@@ -3179,7 +3179,7 @@ This function is an internal primitive--use `make-frame' instead. */)
3179 f->output_data.x->mouse_pixel = -1; 3179 f->output_data.x->mouse_pixel = -1;
3180 3180
3181 black = build_string ("black"); 3181 black = build_string ("black");
3182 GCPRO1_VAR (black, inner_gcpro); 3182 GCPRO1 (black);
3183 FRAME_FOREGROUND_PIXEL (f) 3183 FRAME_FOREGROUND_PIXEL (f)
3184 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); 3184 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
3185 FRAME_BACKGROUND_PIXEL (f) 3185 FRAME_BACKGROUND_PIXEL (f)
@@ -3192,7 +3192,7 @@ This function is an internal primitive--use `make-frame' instead. */)
3192 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); 3192 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
3193 f->output_data.x->mouse_pixel 3193 f->output_data.x->mouse_pixel
3194 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); 3194 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
3195 UNGCPRO_VAR (inner_gcpro); 3195 UNGCPRO;
3196 } 3196 }
3197 3197
3198 /* Specify the parent under which to make this X window. */ 3198 /* Specify the parent under which to make this X window. */
@@ -4620,7 +4620,7 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
4620 to get the color reference counts right, so initialize them! */ 4620 to get the color reference counts right, so initialize them! */
4621 { 4621 {
4622 Lisp_Object black; 4622 Lisp_Object black;
4623 struct gcpro inner_gcpro1; 4623 struct gcpro gcpro1;
4624 4624
4625 /* Function x_decode_color can signal an error. Make 4625 /* Function x_decode_color can signal an error. Make
4626 sure to initialize color slots so that we won't try 4626 sure to initialize color slots so that we won't try
@@ -4633,7 +4633,7 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
4633 f->output_data.x->mouse_pixel = -1; 4633 f->output_data.x->mouse_pixel = -1;
4634 4634
4635 black = build_string ("black"); 4635 black = build_string ("black");
4636 GCPRO1_VAR (black, inner_gcpro); 4636 GCPRO1 (black);
4637 FRAME_FOREGROUND_PIXEL (f) 4637 FRAME_FOREGROUND_PIXEL (f)
4638 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); 4638 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
4639 FRAME_BACKGROUND_PIXEL (f) 4639 FRAME_BACKGROUND_PIXEL (f)
@@ -4646,7 +4646,7 @@ x_create_tip_frame (struct x_display_info *dpyinfo,
4646 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); 4646 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
4647 f->output_data.x->mouse_pixel 4647 f->output_data.x->mouse_pixel
4648 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); 4648 = x_decode_color (f, black, BLACK_PIX_DEFAULT (f));
4649 UNGCPRO_VAR (inner_gcpro); 4649 UNGCPRO;
4650 } 4650 }
4651 4651
4652 /* Set the name; the functions to which we pass f expect the name to 4652 /* Set the name; the functions to which we pass f expect the name to