From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Kevin Ryde Newsgroups: gmane.lisp.guile.devel Subject: array-map! source args Date: Tue, 14 Dec 2004 10:22:08 +1100 Message-ID: <87fz29yean.fsf@zip.com.au> NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: sea.gmane.org 1102980217 23932 80.91.229.6 (13 Dec 2004 23:23:37 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Mon, 13 Dec 2004 23:23:37 +0000 (UTC) Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Tue Dec 14 00:23:33 2004 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1CdzXQ-0000UY-00 for ; Tue, 14 Dec 2004 00:23:32 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1CdzhY-0001zV-1e for guile-devel@m.gmane.org; Mon, 13 Dec 2004 18:34:00 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1CdzhT-0001vo-6F for guile-devel@gnu.org; Mon, 13 Dec 2004 18:33:55 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1CdzhS-0001v0-E9 for guile-devel@gnu.org; Mon, 13 Dec 2004 18:33:54 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1CdzhS-0001ud-AP for guile-devel@gnu.org; Mon, 13 Dec 2004 18:33:54 -0500 Original-Received: from [61.8.0.84] (helo=mailout1.pacific.net.au) by monty-python.gnu.org with esmtp (Exim 4.34) id 1CdzWO-0008Nb-34 for guile-devel@gnu.org; Mon, 13 Dec 2004 18:22:28 -0500 Original-Received: from mailproxy1.pacific.net.au (mailproxy1.pacific.net.au [61.8.0.86]) by mailout1.pacific.net.au (8.12.3/8.12.3/Debian-7.1) with ESMTP id iBDNMNGx022402 for ; Tue, 14 Dec 2004 10:22:23 +1100 Original-Received: from localhost (ppp2946.dyn.pacific.net.au [61.8.41.70]) by mailproxy1.pacific.net.au (8.12.3/8.12.3/Debian-7.1) with ESMTP id iBDNMLcG023509 for ; Tue, 14 Dec 2004 10:22:22 +1100 Original-Received: from gg by localhost with local (Exim 3.36 #1 (Debian)) id 1CdzW5-0004sX-00; Tue, 14 Dec 2004 10:22:09 +1100 Original-To: guile-devel@gnu.org Mail-Copies-To: never User-Agent: Gnus/5.110003 (No Gnus v0.3) Emacs/21.3 (gnu/linux) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: main.gmane.org gmane.lisp.guile.devel:4505 X-Report-Spam: http://spam.gmane.org/gmane.lisp.guile.devel:4505 --=-=-= I think the change in 1.6 to array-map! to check for no source args is too strict, it rejects one source arg, eg. (array-map! #(1 2) noop #(3 4)) => :1:7: In procedure array-map! in expression (array-map! #(1 2) noop ...): :1:7: At least one source array is required. ABORT: (misc-error) I'm thinking of * ramap.c (scm_array_map_x): Correction to sources list check, only need at least one source, not two. And use SCM_WRONG_NUM_ARGS() for the error. Likewise in the head (which hasn't had this check at all yet). --=-=-= Content-Disposition: attachment; filename=ramap.c.sources.diff --- ramap.c.~1.77.2.6.~ 2004-11-26 08:44:37.000000000 +1100 +++ ramap.c 2004-12-14 10:20:16.000000000 +1100 @@ -1529,10 +1529,8 @@ { SCM_VALIDATE_PROC (2,proc); - if (!(SCM_CONSP (sources) && SCM_CONSP (SCM_CDR (sources)))) - { - SCM_MISC_ERROR ("At least one source array is required.", SCM_EOL); - } + if (!(SCM_CONSP (sources))) + SCM_WRONG_NUM_ARGS (); switch (SCM_TYP7 (proc)) { --=-=-= Content-Disposition: attachment; filename=ramap.test ;;;; ramap.test --- test array mapping functions -*- scheme -*- ;;;; ;;;; Copyright (C) 2004 Free Software Foundation, Inc. ;;;; ;;;; This program is free software; you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by ;;;; the Free Software Foundation; either version 2, or (at your option) ;;;; any later version. ;;;; ;;;; This program is distributed in the hope that it will be useful, ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;;; GNU General Public License for more details. ;;;; ;;;; You should have received a copy of the GNU General Public License ;;;; along with this software; see the file COPYING. If not, write to ;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330, ;;;; Boston, MA 02111-1307 USA ;;;; ;;;; As a special exception, the Free Software Foundation gives permission ;;;; for additional uses of the text contained in its release of GUILE. ;;;; ;;;; The exception is that, if you link the GUILE library with other files ;;;; to produce an executable, this does not by itself cause the ;;;; resulting executable to be covered by the GNU General Public License. ;;;; Your use of that executable is in no way restricted on account of ;;;; linking the GUILE library code into it. ;;;; ;;;; This exception does not however invalidate any other reasons why ;;;; the executable file might be covered by the GNU General Public License. ;;;; ;;;; This exception applies only to the code released by the ;;;; Free Software Foundation under the name GUILE. If you copy ;;;; code from other Free Software Foundation releases into a copy of ;;;; GUILE, as the General Public License permits, the exception does ;;;; not apply to the code that you add in this way. To avoid misleading ;;;; anyone as to the status of such modified files, you must delete ;;;; this exception notice from them. ;;;; ;;;; If you write modifications of your own for GUILE, it is your choice ;;;; whether to permit this exception to apply to your modifications. ;;;; If you do not wish that, delete this exception notice. (define-module (test-suite test-ramap) #:use-module (test-suite lib)) ;;; ;;; array-map! ;;; (with-test-prefix "array-map!" (pass-if-exception "no args" exception:wrong-num-args (array-map!)) (pass-if-exception "one args" exception:wrong-num-args (array-map! (make-array #f 5))) ;; prior to Guile 1.6.5 this resulted in a segv (pass-if-exception "two args" '(misc-error . ".*") (array-map! (make-array #f 5) noop)) ;; in Guile 1.6.5 and 1.6.6 this was an error (pass-if "two args" (let ((a (make-array #f 5))) (array-map! a 1+ (make-array 123 5)) (equal? a (make-array 124 5)))) (pass-if "three args" (let ((a (make-array #f 4))) (array-map! a + #(1 2 3 4) #(5 6 7 8)) (equal? a #(6 8 10 12))))) --=-=-= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel --=-=-=--