diff --git a/module/ice-9/boot-9.scm b/module/ice-9/boot-9.scm index fd924454e..f9a7c1fd9 100644 --- a/module/ice-9/boot-9.scm +++ b/module/ice-9/boot-9.scm @@ -923,7 +923,8 @@ for key @var{k}, then invoke @var{thunk}." (scm-error 'wrong-type-arg "for-each" "Circular list: ~S" (list l) #f)) (f (car hare)) - (for-each1 (cdr hare) (cdr tortoise)))))) + (for-each1 (cdr hare) (cdr tortoise))) + (for-each1 hare tortoise)))) (if (not (null? hare)) (scm-error 'wrong-type-arg "for-each" "Not a list: ~S" (list l) #f))))) diff --git a/test-suite/tests/eval.test b/test-suite/tests/eval.test index 2e0a767ba..3fc1d9444 100644 --- a/test-suite/tests/eval.test +++ b/test-suite/tests/eval.test @@ -1,5 +1,5 @@ ;;;; eval.test --- tests guile's evaluator -*- scheme -*- -;;;; Copyright (C) 2000, 2001, 2006, 2007, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. +;;;; Copyright (C) 2000, 2001, 2006, 2007, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -218,6 +218,16 @@ (map + '(1 2) '(3))) ))) +(with-test-prefix "for-each" + + (pass-if-exception "1 arg, non-list, even number of elements" + exception:not-a-list + (for-each values '(1 2 3 4 . 5))) + + (pass-if-exception "1 arg, non-list, odd number of elements" + exception:not-a-list + (for-each values '(1 2 3 . 4)))) + ;;; ;;; define with procedure-name ;;;