This is an automated email from the git hooks/post-receive script.

civodul pushed a commit to branch main
in repository guile.

The following commit(s) were added to refs/heads/main by this push:
     new 51152392e Do not expand 'make-vector' primcall with wrong number of 
arguments.
51152392e is described below

commit 51152392ef04b053e3c7b2576473df2df9d08fe0
Author: Ludovic Courtès <l...@gnu.org>
AuthorDate: Mon Jan 16 15:33:18 2023 +0100

    Do not expand 'make-vector' primcall with wrong number of arguments.
    
    Fixes <https://bugs.gnu.org/60522>.
    Reported by Sascha Ziemann <cev...@gmail.com>.
    
    * module/language/tree-il/primitives.scm (make-vector): Return #f when
    passed an incorrect number of arguments.
    * test-suite/tests/peval.test ("partial evaluation"): Add tests.
---
 module/language/tree-il/primitives.scm |  6 +++---
 test-suite/tests/peval.test            | 13 +++++++++++--
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/module/language/tree-il/primitives.scm 
b/module/language/tree-il/primitives.scm
index 135a1f56f..1d85c0624 100644
--- a/module/language/tree-il/primitives.scm
+++ b/module/language/tree-il/primitives.scm
@@ -1,6 +1,6 @@
 ;;; open-coding primitive procedures
 
-;; Copyright (C) 2009-2015, 2017-2022 Free Software Foundation, Inc.
+;; Copyright (C) 2009-2015, 2017-2023 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
@@ -471,8 +471,8 @@
     (make-primcall src 'make-vector (list len (make-const src *unspecified*))))
    ((src len init)
     (make-primcall src 'make-vector (list len init)))
-   ((src . args)
-    (make-call src (make-primitive-ref src 'make-vector) args))))
+   ((src . args)                              ;wrong number of arguments
+    #f)))
 
 (define-primitive-expander caar (x) (car (car x)))
 (define-primitive-expander cadr (x) (car (cdr x)))
diff --git a/test-suite/tests/peval.test b/test-suite/tests/peval.test
index 89b4870f6..a2e4975d9 100644
--- a/test-suite/tests/peval.test
+++ b/test-suite/tests/peval.test
@@ -1,7 +1,7 @@
 ;;;; tree-il.test --- test suite for compiling tree-il   -*- scheme -*-
 ;;;; Andy Wingo <wi...@pobox.com> --- May 2009
 ;;;;
-;;;;   Copyright (C) 2009-2014, 2017, 2020, 2022 Free Software Foundation, Inc.
+;;;;   Copyright (C) 2009-2014, 2017, 2020, 2022-2023 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
@@ -1445,7 +1445,16 @@
                   (primcall + (const 1) (lexical n _))))))
              (call (lexical add1 _)
                    (const 1)
-                   (const 2))))))))
+                   (const 2)))))))
+
+  (pass-if-peval (make-vector 123 x)
+    (primcall make-vector (const 123) (toplevel x)))
+
+  (pass-if-peval (make-vector)
+    ;; This used to trigger an infinite loop between
+    ;; 'resolve-primitives' and 'expand-primcall':
+    ;; <https://bugs.gnu.org/60522>.
+    (primcall make-vector)))
 
 (with-test-prefix "eqv?"
   (pass-if-peval (eqv? x #f)

Reply via email to