aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2011-09-25 22:50:37 -0700
committerPaul Eggert2011-09-25 22:50:37 -0700
commit856bbc8152110a354293411eac5c629da9f4f74f (patch)
tree6d41b20dbcf11043c2976a9b331d26775bce116c /src
parent60b5d3ca2bf381f450da02e3936f7b43b7ca2dab (diff)
downloademacs-856bbc8152110a354293411eac5c629da9f4f74f.tar.gz
emacs-856bbc8152110a354293411eac5c629da9f4f74f.zip
* eval.c (Fprog1, Fprog2): Don't assume list length fits in int. Simplify.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog3
-rw-r--r--src/eval.c42
2 files changed, 9 insertions, 36 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index ff76a9a8c78..9a2590eb54e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,4 +1,4 @@
12011-09-25 Paul Eggert <eggert@cs.ucla.edu> 12011-09-26 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp): 3 * alloc.c (pure_bytes_used_lisp, pure_bytes_used_non_lisp):
4 (allocate_vectorlike, buffer_memory_full, struct sdata, SDATA_SIZE) 4 (allocate_vectorlike, buffer_memory_full, struct sdata, SDATA_SIZE)
@@ -269,6 +269,7 @@
269 Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. 269 Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts.
270 (Fapply, apply_lambda): Don't assume ptrdiff_t can hold fixnum. 270 (Fapply, apply_lambda): Don't assume ptrdiff_t can hold fixnum.
271 (grow_specpdl): Simplify allocation by using xpalloc. 271 (grow_specpdl): Simplify allocation by using xpalloc.
272 (Fprog1, Fprog2): Don't assume list length fits in int. Simplify.
272 * fileio.c (Ffind_file_name_handler, Fcopy_file, Frename_file) 273 * fileio.c (Ffind_file_name_handler, Fcopy_file, Frename_file)
273 (Finsert_file_contents, Fwrite_region, Fdo_auto_save): 274 (Finsert_file_contents, Fwrite_region, Fdo_auto_save):
274 Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts. 275 Use ptrdiff_t, not int, to avoid needless 32-bit limit on 64-bit hosts.
diff --git a/src/eval.c b/src/eval.c
index b4ef785b3c7..257b878395e 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -373,23 +373,14 @@ usage: (prog1 FIRST BODY...) */)
373 Lisp_Object val; 373 Lisp_Object val;
374 register Lisp_Object args_left; 374 register Lisp_Object args_left;
375 struct gcpro gcpro1, gcpro2; 375 struct gcpro gcpro1, gcpro2;
376 register int argnum = 0;
377
378 if (NILP (args))
379 return Qnil;
380 376
381 args_left = args; 377 args_left = args;
382 val = Qnil; 378 val = Qnil;
383 GCPRO2 (args, val); 379 GCPRO2 (args, val);
384 380
385 do 381 val = eval_sub (XCAR (args_left));
386 { 382 while (CONSP (args_left = XCDR (args_left)))
387 Lisp_Object tem = eval_sub (XCAR (args_left)); 383 eval_sub (XCAR (args_left));
388 if (!(argnum++))
389 val = tem;
390 args_left = XCDR (args_left);
391 }
392 while (CONSP (args_left));
393 384
394 UNGCPRO; 385 UNGCPRO;
395 return val; 386 return val;
@@ -402,31 +393,12 @@ remaining args, whose values are discarded.
402usage: (prog2 FORM1 FORM2 BODY...) */) 393usage: (prog2 FORM1 FORM2 BODY...) */)
403 (Lisp_Object args) 394 (Lisp_Object args)
404{ 395{
405 Lisp_Object val; 396 struct gcpro gcpro1;
406 register Lisp_Object args_left;
407 struct gcpro gcpro1, gcpro2;
408 register int argnum = -1;
409
410 val = Qnil;
411
412 if (NILP (args))
413 return Qnil;
414
415 args_left = args;
416 val = Qnil;
417 GCPRO2 (args, val);
418 397
419 do 398 GCPRO1 (args);
420 {
421 Lisp_Object tem = eval_sub (XCAR (args_left));
422 if (!(argnum++))
423 val = tem;
424 args_left = XCDR (args_left);
425 }
426 while (CONSP (args_left));
427 399
428 UNGCPRO; 400 eval_sub (XCAR (args));
429 return val; 401 RETURN_UNGCPRO (Fprog1 (XCDR (args)));
430} 402}
431 403
432DEFUN ("setq", Fsetq, Ssetq, 0, UNEVALLED, 0, 404DEFUN ("setq", Fsetq, Ssetq, 0, UNEVALLED, 0,