diff options
| author | Paul Eggert | 2011-03-15 10:13:02 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-03-15 10:13:02 -0700 |
| commit | 7082eac6799bba5ebd39417c40c810ed0672c7d9 (patch) | |
| tree | f9b28942d6fc356bf8ec948811a51ff78d73bbf3 /src | |
| parent | 38b2c0769fbfc40162fc8c39170fcb28bcf69520 (diff) | |
| download | emacs-7082eac6799bba5ebd39417c40c810ed0672c7d9.tar.gz emacs-7082eac6799bba5ebd39417c40c810ed0672c7d9.zip | |
* lisp.h: New macros GCPRO2_VAR, GCPRO3_VAR, etc.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 9 | ||||
| -rw-r--r-- | src/keyboard.c | 10 | ||||
| -rw-r--r-- | src/lisp.h | 228 | ||||
| -rw-r--r-- | src/xfns.c | 8 |
4 files changed, 139 insertions, 116 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 6355d81ba40..40ba15de954 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,14 @@ | |||
| 1 | 2011-03-15 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2011-03-15 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | * lisp.h (GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR, GCPRO5_VAR, GCPRO6_VAR): | ||
| 4 | New macros, so that the caller can use some names other than | ||
| 5 | gcpro1, gcpro2, etc. | ||
| 6 | (GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6): Reimplement in terms | ||
| 7 | of the new macros. | ||
| 8 | (GCPRO1_VAR, UNGCPRO_VAR): Change the meaning of the second | ||
| 9 | argument, for consistency with GCPRO2_VAR, etc: it is now the | ||
| 10 | prefix of the variable, not the variable itself. All uses | ||
| 11 | changed. | ||
| 3 | * dired.c (directory_files_internal, file_name_completion): | 12 | * dired.c (directory_files_internal, file_name_completion): |
| 4 | Rename locals to avoid shadowing. | 13 | Rename locals to avoid shadowing. |
| 5 | 14 | ||
diff --git a/src/keyboard.c b/src/keyboard.c index 05b6abe97b3..2a2e24f3b1b 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -2942,7 +2942,7 @@ read_char (int commandflag, int nmaps, Lisp_Object *maps, Lisp_Object prev_event | |||
| 2942 | keys = Fcopy_sequence (this_command_keys); | 2942 | keys = Fcopy_sequence (this_command_keys); |
| 2943 | else | 2943 | else |
| 2944 | keys = Qnil; | 2944 | keys = Qnil; |
| 2945 | GCPRO1_VAR (keys, inner_gcpro1); | 2945 | GCPRO1_VAR (keys, inner_gcpro); |
| 2946 | 2946 | ||
| 2947 | /* Clear out this_command_keys. */ | 2947 | /* Clear out this_command_keys. */ |
| 2948 | this_command_key_count = 0; | 2948 | this_command_key_count = 0; |
| @@ -2980,7 +2980,7 @@ read_char (int commandflag, int nmaps, Lisp_Object *maps, Lisp_Object prev_event | |||
| 2980 | if (saved_immediate_echo) | 2980 | if (saved_immediate_echo) |
| 2981 | echo_now (); | 2981 | echo_now (); |
| 2982 | 2982 | ||
| 2983 | UNGCPRO_VAR (inner_gcpro1); | 2983 | UNGCPRO_VAR (inner_gcpro); |
| 2984 | 2984 | ||
| 2985 | /* The input method can return no events. */ | 2985 | /* The input method can return no events. */ |
| 2986 | if (! CONSP (tem)) | 2986 | if (! CONSP (tem)) |
| @@ -8963,7 +8963,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, | |||
| 8963 | 8963 | ||
| 8964 | struct gcpro outer_gcpro1; | 8964 | struct gcpro outer_gcpro1; |
| 8965 | 8965 | ||
| 8966 | GCPRO1_VAR (fake_prefixed_keys, outer_gcpro1); | 8966 | GCPRO1_VAR (fake_prefixed_keys, outer_gcpro); |
| 8967 | raw_keybuf_count = 0; | 8967 | raw_keybuf_count = 0; |
| 8968 | 8968 | ||
| 8969 | last_nonmenu_event = Qnil; | 8969 | last_nonmenu_event = Qnil; |
| @@ -9258,7 +9258,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, | |||
| 9258 | if (EQ (key, Qt)) | 9258 | if (EQ (key, Qt)) |
| 9259 | { | 9259 | { |
| 9260 | unbind_to (count, Qnil); | 9260 | unbind_to (count, Qnil); |
| 9261 | UNGCPRO_VAR (outer_gcpro1); | 9261 | UNGCPRO_VAR (outer_gcpro); |
| 9262 | return -1; | 9262 | return -1; |
| 9263 | } | 9263 | } |
| 9264 | 9264 | ||
| @@ -9941,7 +9941,7 @@ read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt, | |||
| 9941 | add_command_key (keybuf[t]); | 9941 | add_command_key (keybuf[t]); |
| 9942 | } | 9942 | } |
| 9943 | 9943 | ||
| 9944 | UNGCPRO_VAR (outer_gcpro1); | 9944 | UNGCPRO_VAR (outer_gcpro); |
| 9945 | return t; | 9945 | return t; |
| 9946 | } | 9946 | } |
| 9947 | 9947 | ||
diff --git a/src/lisp.h b/src/lisp.h index 15c13e0467b..ddaf0438b00 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -2109,129 +2109,143 @@ struct gcpro | |||
| 2109 | || GC_MARK_STACK == GC_MARK_STACK_CHECK_GCPROS) | 2109 | || GC_MARK_STACK == GC_MARK_STACK_CHECK_GCPROS) |
| 2110 | 2110 | ||
| 2111 | 2111 | ||
| 2112 | #define GCPRO1(varname) GCPRO1_VAR (varname, gcpro1) | 2112 | #define GCPRO1(var) \ |
| 2113 | #define UNGCPRO UNGCPRO_VAR (gcpro1) | 2113 | GCPRO1_VAR (var, gcpro) |
| 2114 | #define GCPRO2(var1, var2) \ | ||
| 2115 | GCPRO2_VAR (var1, var2, gcpro) | ||
| 2116 | #define GCPRO3(var1, var2, var3) \ | ||
| 2117 | GCPRO3_VAR (var1, var2, var3, gcpro) | ||
| 2118 | #define GCPRO4(var1, var2, var3, var4) \ | ||
| 2119 | GCPRO4_VAR (var1, var2, var3, var4, gcpro) | ||
| 2120 | #define GCPRO5(var1, var2, var3, var4, var5) \ | ||
| 2121 | GCPRO5_VAR (var1, var2, var3, var4, var5, gcpro) | ||
| 2122 | #define GCPRO6(var1, var2, var3, var4, var5, var6) \ | ||
| 2123 | GCPRO6_VAR (var1, var2, var3, var4, var5, var6, gcpro) | ||
| 2124 | #define UNGCPRO UNGCPRO_VAR (gcpro) | ||
| 2114 | 2125 | ||
| 2115 | #if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS | 2126 | #if GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS |
| 2116 | 2127 | ||
| 2117 | /* Do something silly with gcproN vars just so gcc shuts up. */ | 2128 | /* Do something silly with gcproN vars just so gcc shuts up. */ |
| 2118 | /* You get warnings from MIPSPro... */ | 2129 | /* You get warnings from MIPSPro... */ |
| 2119 | 2130 | ||
| 2120 | #define GCPRO1_VAR(varname, gcpro1) ((void) gcpro1) | 2131 | #define GCPRO1_VAR(var, gcpro) ((void) gcpro##1) |
| 2121 | #define GCPRO2(varname1, varname2)(((void) gcpro2, (void) gcpro1)) | 2132 | #define GCPRO2_VAR(var1, var2, gcpro) \ |
| 2122 | #define GCPRO3(varname1, varname2, varname3) \ | 2133 | ((void) gcpro##2, (void) gcpro##1) |
| 2123 | (((void) gcpro3, (void) gcpro2, (void) gcpro1)) | 2134 | #define GCPRO3_VAR(var1, var2, var3, gcpro) \ |
| 2124 | #define GCPRO4(varname1, varname2, varname3, varname4) \ | 2135 | ((void) gcpro##3, (void) gcpro##2, (void) gcpro##1) |
| 2125 | (((void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1)) | 2136 | #define GCPRO4_VAR(var1, var2, var3, var4, gcpro) \ |
| 2126 | #define GCPRO5(varname1, varname2, varname3, varname4, varname5) \ | 2137 | ((void) gcpro##4, (void) gcpro##3, (void) gcpro##2, (void) gcpro##1) |
| 2127 | (((void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1)) | 2138 | #define GCPRO5_VAR(var1, var2, var3, var4, var5, gcpro) \ |
| 2128 | #define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \ | 2139 | ((void) gcpro##5, (void) gcpro##4, (void) gcpro##3, (void) gcpro##2, \ |
| 2129 | (((void) gcpro6, (void) gcpro5, (void) gcpro4, (void) gcpro3, (void) gcpro2, (void) gcpro1)) | 2140 | (void) gcpro##1) |
| 2130 | #define UNGCPRO_VAR(gcpro1) ((void) 0) | 2141 | #define GCPRO6_VAR(var1, var2, var3, var4, var5, var6, gcpro) \ |
| 2142 | ((void) gcpro##6, (void) gcpro##5, (void) gcpro##4, (void) gcpro##3, \ | ||
| 2143 | (void) gcpro##2, (void) gcpro##1) | ||
| 2144 | #define UNGCPRO_VAR(gcpro) ((void) 0) | ||
| 2131 | 2145 | ||
| 2132 | #else /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ | 2146 | #else /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ |
| 2133 | 2147 | ||
| 2134 | #ifndef DEBUG_GCPRO | 2148 | #ifndef DEBUG_GCPRO |
| 2135 | 2149 | ||
| 2136 | #define GCPRO1_VAR(varname, gcpro1) \ | 2150 | #define GCPRO1_VAR(var, gcpro) \ |
| 2137 | {gcpro1.next = gcprolist; gcpro1.var = &varname; gcpro1.nvars = 1; \ | 2151 | {gcpro##1.next = gcprolist; gcpro##1.var = &var; gcpro##1.nvars = 1; \ |
| 2138 | gcprolist = &gcpro1; } | 2152 | gcprolist = &gcpro##1; } |
| 2139 | 2153 | ||
| 2140 | #define GCPRO2(varname1, varname2) \ | 2154 | #define GCPRO2_VAR(var1, var2, gcpro) \ |
| 2141 | {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \ | 2155 | {gcpro##1.next = gcprolist; gcpro##1.var = &var1; gcpro##1.nvars = 1; \ |
| 2142 | gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \ | 2156 | gcpro##2.next = &gcpro##1; gcpro##2.var = &var2; gcpro##2.nvars = 1; \ |
| 2143 | gcprolist = &gcpro2; } | 2157 | gcprolist = &gcpro##2; } |
| 2144 | 2158 | ||
| 2145 | #define GCPRO3(varname1, varname2, varname3) \ | 2159 | #define GCPRO3_VAR(var1, var2, var3, gcpro) \ |
| 2146 | {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \ | 2160 | {gcpro##1.next = gcprolist; gcpro##1.var = &var1; gcpro##1.nvars = 1; \ |
| 2147 | gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \ | 2161 | gcpro##2.next = &gcpro##1; gcpro##2.var = &var2; gcpro##2.nvars = 1; \ |
| 2148 | gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \ | 2162 | gcpro##3.next = &gcpro##2; gcpro##3.var = &var3; gcpro##3.nvars = 1; \ |
| 2149 | gcprolist = &gcpro3; } | 2163 | gcprolist = &gcpro##3; } |
| 2150 | 2164 | ||
| 2151 | #define GCPRO4(varname1, varname2, varname3, varname4) \ | 2165 | #define GCPRO4_VAR(var1, var2, var3, var4, gcpro) \ |
| 2152 | {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \ | 2166 | {gcpro##1.next = gcprolist; gcpro##1.var = &var1; gcpro##1.nvars = 1; \ |
| 2153 | gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \ | 2167 | gcpro##2.next = &gcpro##1; gcpro##2.var = &var2; gcpro##2.nvars = 1; \ |
| 2154 | gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \ | 2168 | gcpro##3.next = &gcpro##2; gcpro##3.var = &var3; gcpro##3.nvars = 1; \ |
| 2155 | gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \ | 2169 | gcpro##4.next = &gcpro##3; gcpro##4.var = &var4; gcpro##4.nvars = 1; \ |
| 2156 | gcprolist = &gcpro4; } | 2170 | gcprolist = &gcpro##4; } |
| 2157 | 2171 | ||
| 2158 | #define GCPRO5(varname1, varname2, varname3, varname4, varname5) \ | 2172 | #define GCPRO5_VAR(var1, var2, var3, var4, var5, gcpro) \ |
| 2159 | {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \ | 2173 | {gcpro##1.next = gcprolist; gcpro##1.var = &var1; gcpro##1.nvars = 1; \ |
| 2160 | gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \ | 2174 | gcpro##2.next = &gcpro##1; gcpro##2.var = &var2; gcpro##2.nvars = 1; \ |
| 2161 | gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \ | 2175 | gcpro##3.next = &gcpro##2; gcpro##3.var = &var3; gcpro##3.nvars = 1; \ |
| 2162 | gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \ | 2176 | gcpro##4.next = &gcpro##3; gcpro##4.var = &var4; gcpro##4.nvars = 1; \ |
| 2163 | gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \ | 2177 | gcpro##5.next = &gcpro##4; gcpro##5.var = &var5; gcpro##5.nvars = 1; \ |
| 2164 | gcprolist = &gcpro5; } | 2178 | gcprolist = &gcpro##5; } |
| 2165 | 2179 | ||
| 2166 | #define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \ | 2180 | #define GCPRO6_VAR(var1, var2, var3, var4, var5, var6, gcpro) \ |
| 2167 | {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \ | 2181 | {gcpro##1.next = gcprolist; gcpro##1.var = &var1; gcpro##1.nvars = 1; \ |
| 2168 | gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \ | 2182 | gcpro##2.next = &gcpro##1; gcpro##2.var = &var2; gcpro##2.nvars = 1; \ |
| 2169 | gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \ | 2183 | gcpro##3.next = &gcpro##2; gcpro##3.var = &var3; gcpro##3.nvars = 1; \ |
| 2170 | gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \ | 2184 | gcpro##4.next = &gcpro##3; gcpro##4.var = &var4; gcpro##4.nvars = 1; \ |
| 2171 | gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \ | 2185 | gcpro##5.next = &gcpro##4; gcpro##5.var = &var5; gcpro##5.nvars = 1; \ |
| 2172 | gcpro6.next = &gcpro5; gcpro6.var = &varname6; gcpro6.nvars = 1; \ | 2186 | gcpro##6.next = &gcpro##5; gcpro##6.var = &var6; gcpro##6.nvars = 1; \ |
| 2173 | gcprolist = &gcpro6; } | 2187 | gcprolist = &gcpro##6; } |
| 2174 | 2188 | ||
| 2175 | #define UNGCPRO_VAR(gcpro1) (gcprolist = gcpro1.next) | 2189 | #define UNGCPRO_VAR(gcpro) (gcprolist = gcpro##1.next) |
| 2176 | 2190 | ||
| 2177 | #else | 2191 | #else |
| 2178 | 2192 | ||
| 2179 | extern int gcpro_level; | 2193 | extern int gcpro_level; |
| 2180 | 2194 | ||
| 2181 | #define GCPRO1_VAR(varname, gcpro1) \ | 2195 | #define GCPRO1_VAR(var, gcpro) \ |
| 2182 | {gcpro1.next = gcprolist; gcpro1.var = &varname; gcpro1.nvars = 1; \ | 2196 | {gcpro##1.next = gcprolist; gcpro##1.var = &var; gcpro##1.nvars = 1; \ |
| 2183 | gcpro1.level = gcpro_level++; \ | 2197 | gcpro##1.level = gcpro_level++; \ |
| 2184 | gcprolist = &gcpro1; } | 2198 | gcprolist = &gcpro##1; } |
| 2185 | 2199 | ||
| 2186 | #define GCPRO2(varname1, varname2) \ | 2200 | #define GCPRO2_VAR(var1, var2, gcpro) \ |
| 2187 | {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \ | 2201 | {gcpro##1.next = gcprolist; gcpro##1.var = &var1; gcpro##1.nvars = 1; \ |
| 2188 | gcpro1.level = gcpro_level; \ | 2202 | gcpro##1.level = gcpro_level; \ |
| 2189 | gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \ | 2203 | gcpro##2.next = &gcpro##1; gcpro##2.var = &var2; gcpro##2.nvars = 1; \ |
| 2190 | gcpro2.level = gcpro_level++; \ | 2204 | gcpro##2.level = gcpro_level++; \ |
| 2191 | gcprolist = &gcpro2; } | 2205 | gcprolist = &gcpro##2; } |
| 2192 | 2206 | ||
| 2193 | #define GCPRO3(varname1, varname2, varname3) \ | 2207 | #define GCPRO3_VAR(var1, var2, var3, gcpro) \ |
| 2194 | {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \ | 2208 | {gcpro##1.next = gcprolist; gcpro##1.var = &var1; gcpro##1.nvars = 1; \ |
| 2195 | gcpro1.level = gcpro_level; \ | 2209 | gcpro##1.level = gcpro_level; \ |
| 2196 | gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \ | 2210 | gcpro##2.next = &gcpro##1; gcpro##2.var = &var2; gcpro##2.nvars = 1; \ |
| 2197 | gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \ | 2211 | gcpro##3.next = &gcpro##2; gcpro##3.var = &var3; gcpro##3.nvars = 1; \ |
| 2198 | gcpro3.level = gcpro_level++; \ | 2212 | gcpro##3.level = gcpro_level++; \ |
| 2199 | gcprolist = &gcpro3; } | 2213 | gcprolist = &gcpro##3; } |
| 2200 | 2214 | ||
| 2201 | #define GCPRO4(varname1, varname2, varname3, varname4) \ | 2215 | #define GCPRO4_VAR(var1, var2, var3, var4, gcpro) \ |
| 2202 | {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \ | 2216 | {gcpro##1.next = gcprolist; gcpro##1.var = &var1; gcpro##1.nvars = 1; \ |
| 2203 | gcpro1.level = gcpro_level; \ | 2217 | gcpro##1.level = gcpro_level; \ |
| 2204 | gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \ | 2218 | gcpro##2.next = &gcpro##1; gcpro##2.var = &var2; gcpro##2.nvars = 1; \ |
| 2205 | gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \ | 2219 | gcpro##3.next = &gcpro##2; gcpro##3.var = &var3; gcpro##3.nvars = 1; \ |
| 2206 | gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \ | 2220 | gcpro##4.next = &gcpro##3; gcpro##4.var = &var4; gcpro##4.nvars = 1; \ |
| 2207 | gcpro4.level = gcpro_level++; \ | 2221 | gcpro##4.level = gcpro_level++; \ |
| 2208 | gcprolist = &gcpro4; } | 2222 | gcprolist = &gcpro##4; } |
| 2209 | 2223 | ||
| 2210 | #define GCPRO5(varname1, varname2, varname3, varname4, varname5) \ | 2224 | #define GCPRO5_VAR(var1, var2, var3, var4, var5, gcpro) \ |
| 2211 | {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \ | 2225 | {gcpro##1.next = gcprolist; gcpro##1.var = &var1; gcpro##1.nvars = 1; \ |
| 2212 | gcpro1.level = gcpro_level; \ | 2226 | gcpro##1.level = gcpro_level; \ |
| 2213 | gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \ | 2227 | gcpro##2.next = &gcpro##1; gcpro##2.var = &var2; gcpro##2.nvars = 1; \ |
| 2214 | gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \ | 2228 | gcpro##3.next = &gcpro##2; gcpro##3.var = &var3; gcpro##3.nvars = 1; \ |
| 2215 | gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \ | 2229 | gcpro##4.next = &gcpro##3; gcpro##4.var = &var4; gcpro##4.nvars = 1; \ |
| 2216 | gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \ | 2230 | gcpro##5.next = &gcpro##4; gcpro##5.var = &var5; gcpro##5.nvars = 1; \ |
| 2217 | gcpro5.level = gcpro_level++; \ | 2231 | gcpro##5.level = gcpro_level++; \ |
| 2218 | gcprolist = &gcpro5; } | 2232 | gcprolist = &gcpro##5; } |
| 2219 | 2233 | ||
| 2220 | #define GCPRO6(varname1, varname2, varname3, varname4, varname5, varname6) \ | 2234 | #define GCPRO6_VAR(var1, var2, var3, var4, var5, var6, gcpro) \ |
| 2221 | {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \ | 2235 | {gcpro##1.next = gcprolist; gcpro##1.var = &var1; gcpro##1.nvars = 1; \ |
| 2222 | gcpro1.level = gcpro_level; \ | 2236 | gcpro##1.level = gcpro_level; \ |
| 2223 | gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \ | 2237 | gcpro##2.next = &gcpro##1; gcpro##2.var = &var2; gcpro##2.nvars = 1; \ |
| 2224 | gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \ | 2238 | gcpro##3.next = &gcpro##2; gcpro##3.var = &var3; gcpro##3.nvars = 1; \ |
| 2225 | gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \ | 2239 | gcpro##4.next = &gcpro##3; gcpro##4.var = &var4; gcpro##4.nvars = 1; \ |
| 2226 | gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \ | 2240 | gcpro##5.next = &gcpro##4; gcpro##5.var = &var5; gcpro##5.nvars = 1; \ |
| 2227 | gcpro6.next = &gcpro5; gcpro6.var = &varname6; gcpro6.nvars = 1; \ | 2241 | gcpro##6.next = &gcpro##5; gcpro##6.var = &var6; gcpro##6.nvars = 1; \ |
| 2228 | gcpro6.level = gcpro_level++; \ | 2242 | gcpro##6.level = gcpro_level++; \ |
| 2229 | gcprolist = &gcpro6; } | 2243 | gcprolist = &gcpro##6; } |
| 2230 | 2244 | ||
| 2231 | #define UNGCPRO_VAR(gcpro1) \ | 2245 | #define UNGCPRO_VAR(gcpro) \ |
| 2232 | ((--gcpro_level != gcpro1.level) \ | 2246 | ((--gcpro_level != gcpro##1.level) \ |
| 2233 | ? (abort (), 0) \ | 2247 | ? (abort (), 0) \ |
| 2234 | : ((gcprolist = gcpro1.next), 0)) | 2248 | : ((gcprolist = gcpro##1.next), 0)) |
| 2235 | 2249 | ||
| 2236 | #endif /* DEBUG_GCPRO */ | 2250 | #endif /* DEBUG_GCPRO */ |
| 2237 | #endif /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ | 2251 | #endif /* GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS */ |
diff --git a/src/xfns.c b/src/xfns.c index 3f0bd2a7d6a..e50d6887179 100644 --- a/src/xfns.c +++ b/src/xfns.c | |||
| @@ -3196,7 +3196,7 @@ This function is an internal primitive--use `make-frame' instead. */) | |||
| 3196 | f->output_data.x->mouse_pixel = -1; | 3196 | f->output_data.x->mouse_pixel = -1; |
| 3197 | 3197 | ||
| 3198 | black = build_string ("black"); | 3198 | black = build_string ("black"); |
| 3199 | GCPRO1_VAR (black, inner_gcpro1); | 3199 | GCPRO1_VAR (black, inner_gcpro); |
| 3200 | FRAME_FOREGROUND_PIXEL (f) | 3200 | FRAME_FOREGROUND_PIXEL (f) |
| 3201 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); | 3201 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); |
| 3202 | FRAME_BACKGROUND_PIXEL (f) | 3202 | FRAME_BACKGROUND_PIXEL (f) |
| @@ -3209,7 +3209,7 @@ This function is an internal primitive--use `make-frame' instead. */) | |||
| 3209 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); | 3209 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); |
| 3210 | f->output_data.x->mouse_pixel | 3210 | f->output_data.x->mouse_pixel |
| 3211 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); | 3211 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); |
| 3212 | UNGCPRO_VAR (inner_gcpro1); | 3212 | UNGCPRO_VAR (inner_gcpro); |
| 3213 | } | 3213 | } |
| 3214 | 3214 | ||
| 3215 | /* Specify the parent under which to make this X window. */ | 3215 | /* Specify the parent under which to make this X window. */ |
| @@ -4664,7 +4664,7 @@ x_create_tip_frame (struct x_display_info *dpyinfo, | |||
| 4664 | f->output_data.x->mouse_pixel = -1; | 4664 | f->output_data.x->mouse_pixel = -1; |
| 4665 | 4665 | ||
| 4666 | black = build_string ("black"); | 4666 | black = build_string ("black"); |
| 4667 | GCPRO1_VAR (black, inner_gcpro1); | 4667 | GCPRO1_VAR (black, inner_gcpro); |
| 4668 | FRAME_FOREGROUND_PIXEL (f) | 4668 | FRAME_FOREGROUND_PIXEL (f) |
| 4669 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); | 4669 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); |
| 4670 | FRAME_BACKGROUND_PIXEL (f) | 4670 | FRAME_BACKGROUND_PIXEL (f) |
| @@ -4677,7 +4677,7 @@ x_create_tip_frame (struct x_display_info *dpyinfo, | |||
| 4677 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); | 4677 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); |
| 4678 | f->output_data.x->mouse_pixel | 4678 | f->output_data.x->mouse_pixel |
| 4679 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); | 4679 | = x_decode_color (f, black, BLACK_PIX_DEFAULT (f)); |
| 4680 | UNGCPRO_VAR (inner_gcpro1); | 4680 | UNGCPRO_VAR (inner_gcpro); |
| 4681 | } | 4681 | } |
| 4682 | 4682 | ||
| 4683 | /* Set the name; the functions to which we pass f expect the name to | 4683 | /* Set the name; the functions to which we pass f expect the name to |