Subject: Re: bug#26013: (srfi srfi-37) chokes on empty string parameter

From: Andy Wingo <[email-masked]>
Date: Wed, 19 Apr 2017 17:13:25 +0200

On Tue 07 Mar 2017 16:34, Thomas Danckaert <[email-masked]> writes:

> It looks like Guile's srfi-37 implementation doesn't process empty
> string arguments correctly.  For example, here's a stacktrace I get when
> executing guix system list-generations "":
>
> $ guix system list-generations ""
> Backtrace:
> In ice-9/boot-9.scm:
>  160: 15 [catch #t #<catch-closure 188c1c0> ...]
> In unknown file:
>    ?: 14 [apply-smob/1 #<catch-closure 188c1c0>]
> In ice-9/boot-9.scm:
>   66: 13 [call-with-prompt prompt0 ...]
> In ice-9/eval.scm:
>  432: 12 [eval # #]
> In ice-9/boot-9.scm:
> 2404: 11 [save-module-excursion #<procedure 18af900 at
> ice-9/boot-9.scm:4051:3 ()>]
> 4056: 10 [#<procedure 18af900 at ice-9/boot-9.scm:4051:3 ()>]
> 1727: 9 [%start-stack load-stack ...]
> 1732: 8 [#<procedure 18c3b70 ()>]
> In unknown file:
>    ?: 7 [primitive-load
> "/gnu/store/hnbqdmfh1bwma8nmpai6ci76h5j6bl7j-guix-0.12.0-4.d9da/bin/.guix-real"]
> In guix/ui.scm:
> 1228: 6 [run-guix-command system "list-generations" ""]
> In ice-9/boot-9.scm:
>  160: 5 [catch srfi-34 #<procedure 47e1580 at guix/ui.scm:432:2 ()> ...]
>  160: 4 [catch system-error ...]
> In guix/scripts/system.scm:
>  947: 3 [#<procedure 47e2b10 at guix/scripts/system.scm:946:2 ()>]
> In ice-9/boot-9.scm:
>  160: 2 [catch misc-error #<procedure 47e4c00 at guix/scripts.scm:48:4
> ()> ...]
> In srfi/srfi-37.scm:
>  220: 1 [next-arg]
> In unknown file:
>    ?: 0 [string-ref "" 0]
>
> ERROR: In procedure string-ref:
> ERROR: Value out of range: 0

Sounds like the right diagnosis to me.  Want to submit a patch? :)

Andy