aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman1994-06-22 20:11:29 +0000
committerRichard M. Stallman1994-06-22 20:11:29 +0000
commitc47b8d0264eb40a6a428d9b65631729c3cb81b6c (patch)
tree9ec920e263e48c5cc9b8efc5f786e253eb6e4473 /src
parent5867a409eebad8a6433e59c540ebdd4bccb72543 (diff)
downloademacs-c47b8d0264eb40a6a428d9b65631729c3cb81b6c.tar.gz
emacs-c47b8d0264eb40a6a428d9b65631729c3cb81b6c.zip
(RETURN_UNGCPRO): Swallow semicolon.
(GCPRO5): New macro.
Diffstat (limited to 'src')
-rw-r--r--src/lisp.h24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/lisp.h b/src/lisp.h
index a66c1c97178..cd3f7fc7c3c 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -1069,6 +1069,14 @@ struct gcpro
1069 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \ 1069 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
1070 gcprolist = &gcpro4; } 1070 gcprolist = &gcpro4; }
1071 1071
1072#define GCPRO5(varname1, varname2, varname3, varname4, varname5) \
1073 {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \
1074 gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \
1075 gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \
1076 gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \
1077 gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \
1078 gcprolist = &gcpro5; }
1079
1072/* Call staticpro (&var) to protect static variable `var'. */ 1080/* Call staticpro (&var) to protect static variable `var'. */
1073 1081
1074void staticpro(); 1082void staticpro();
@@ -1079,13 +1087,15 @@ void staticpro();
1079 to have a `do ... while' clause around this to make it interact 1087 to have a `do ... while' clause around this to make it interact
1080 with semicolons correctly, but this makes some compilers complain 1088 with semicolons correctly, but this makes some compilers complain
1081 that the while is never reached. */ 1089 that the while is never reached. */
1082#define RETURN_UNGCPRO(expr) \ 1090#define RETURN_UNGCPRO(expr) \
1083 { \ 1091do \
1084 Lisp_Object ret_ungc_val; \ 1092 { \
1085 ret_ungc_val = (expr); \ 1093 Lisp_Object ret_ungc_val; \
1086 UNGCPRO; \ 1094 ret_ungc_val = (expr); \
1087 return ret_ungc_val; \ 1095 UNGCPRO; \
1088 } 1096 return ret_ungc_val; \
1097 } \
1098while (1)
1089 1099
1090/* Defined in data.c */ 1100/* Defined in data.c */
1091extern Lisp_Object Qnil, Qt, Qquote, Qlambda, Qsubr, Qunbound; 1101extern Lisp_Object Qnil, Qt, Qquote, Qlambda, Qsubr, Qunbound;