aboutsummaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/src/eval.c b/src/eval.c
index ddcccc285d3..e50e26a11d2 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -453,11 +453,10 @@ usage: (progn BODY...) */)
453 return val; 453 return val;
454} 454}
455 455
456/* Evaluate BODY sequentially, discarding its value. Suitable for 456/* Evaluate BODY sequentially, discarding its value. */
457 record_unwind_protect. */
458 457
459void 458void
460unwind_body (Lisp_Object body) 459prog_ignore (Lisp_Object body)
461{ 460{
462 Fprogn (body); 461 Fprogn (body);
463} 462}
@@ -469,16 +468,8 @@ whose values are discarded.
469usage: (prog1 FIRST BODY...) */) 468usage: (prog1 FIRST BODY...) */)
470 (Lisp_Object args) 469 (Lisp_Object args)
471{ 470{
472 Lisp_Object val; 471 Lisp_Object val = eval_sub (XCAR (args));
473 Lisp_Object args_left; 472 prog_ignore (XCDR (args));
474
475 args_left = args;
476 val = args;
477
478 val = eval_sub (XCAR (args_left));
479 while (CONSP (args_left = XCDR (args_left)))
480 eval_sub (XCAR (args_left));
481
482 return val; 473 return val;
483} 474}
484 475
@@ -988,7 +979,7 @@ usage: (while TEST BODY...) */)
988 while (!NILP (eval_sub (test))) 979 while (!NILP (eval_sub (test)))
989 { 980 {
990 QUIT; 981 QUIT;
991 Fprogn (body); 982 prog_ignore (body);
992 } 983 }
993 984
994 return Qnil; 985 return Qnil;
@@ -1191,7 +1182,7 @@ usage: (unwind-protect BODYFORM UNWINDFORMS...) */)
1191 Lisp_Object val; 1182 Lisp_Object val;
1192 ptrdiff_t count = SPECPDL_INDEX (); 1183 ptrdiff_t count = SPECPDL_INDEX ();
1193 1184
1194 record_unwind_protect (unwind_body, XCDR (args)); 1185 record_unwind_protect (prog_ignore, XCDR (args));
1195 val = eval_sub (XCAR (args)); 1186 val = eval_sub (XCAR (args));
1196 return unbind_to (count, val); 1187 return unbind_to (count, val);
1197} 1188}