GNU bug report logs - #18004
export does not check that its arguments are symbols or pairs of symbols

Previous Next

Package: guile;

Reported by: Tobias Brandt <tob.brandt <at> gmail.com>

Date: Sat, 12 Jul 2014 17:21:01 UTC

Severity: normal

Done: Mark H Weaver <mhw <at> netris.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Tobias Brandt <tob.brandt <at> gmail.com>
Subject: bug#18004: closed (Re: bug#18004: export does not check that its
 arguments are symbols or pairs of symbols)
Date: Sun, 13 Jul 2014 13:39:03 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#18004: export does not check that its arguments are symbols or pairs of symbols

which was filed against the guile package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 18004 <at> debbugs.gnu.org.

-- 
18004: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18004
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Mark H Weaver <mhw <at> netris.org>
To: Tobias Brandt <tob.brandt <at> gmail.com>
Cc: 18004-done <at> debbugs.gnu.org
Subject: Re: bug#18004: export does not check that its arguments are symbols
 or pairs of symbols
Date: Sun, 13 Jul 2014 09:37:16 -0400
Hi,

Tobias Brandt <tob.brandt <at> gmail.com> writes:
> Guile happily compiles the following module:
>
> (define-module (test))
> (define (foo) #t)
> (export (foo))
>
> This exports foo as (), because (foo) = (foo . ()) and export treats
> pairs as renaming.

This is already fixed in the latest release (2.0.11), commit
df3acd296e7149630fd6030aced6331ae6dd424b.

I'm closing this bug, but feel free to reopen if there's still a
problem.

      Thanks!
        Mark

[Message part 3 (message/rfc822, inline)]
From: Tobias Brandt <tob.brandt <at> gmail.com>
To: bug-guile <at> gnu.org
Subject: export does not check that its arguments are symbols or pairs of
 symbols
Date: Sat, 12 Jul 2014 16:59:01 +0200
[Message part 4 (text/plain, inline)]
Guile happily compiles the following module:

(define-module (test))
(define (foo) #t)
(export (foo))

This exports foo as (), because (foo) = (foo . ()) and export treats pairs
as renaming.

If you use this module, readline breaks because it looks up the module's
exported symbols and then tries to call (symbol->string '()):

scheme@(guile-user)> (use-modules (test))
scheme@(guile-user)> x<TAB>
While reading expression:
ERROR: In procedure symbol->string: Wrong type argument in position 1
(expecting symbol): ()
[Message part 5 (text/html, inline)]

This bug report was last modified 10 years and 317 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.