unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
From: Thomas Danckaert <post@thomasdanckaert.be>
To: wingo@igalia.com
Cc: ludo@gnu.org, 26013@debbugs.gnu.org
Subject: bug#26013: (srfi srfi-37) chokes on empty string parameter
Date: Wed, 19 Apr 2017 18:32:29 +0200 (CEST)	[thread overview]
Message-ID: <20170419.183229.1069589305335594566.post@thomasdanckaert.be> (raw)
In-Reply-To: <87inm0l9be.fsf@igalia.com>

[-- Attachment #1: Type: Text/Plain, Size: 919 bytes --]

From: Andy Wingo <wingo@igalia.com>
Subject: Re: bug#26013: (srfi srfi-37) chokes on empty string 
parameter
Date: Wed, 19 Apr 2017 17:13:25 +0200

> On Tue 07 Mar 2017 16:34, Thomas Danckaert 
> <post@thomasdanckaert.be> writes:
>
>> It looks like Guile's srfi-37 implementation doesn't process empty
>> string arguments correctly.
>> [...]
>> 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? :)

Well, let me try :)

I don't fully understand the code in srfi-37.scm, but I think the fix 
can be as simple as the attached patch (i.e. first check if the 
argument is empty, otherwise check if it starts with \#-).

I have tried to follow the existing indentation convention, as far as 
I understand it (a mix of tabs and spaces).

Thomas

[-- Attachment #2: 0001-SRFI-37-Account-for-zero-length-arguments.patch --]
[-- Type: Text/X-Patch, Size: 1018 bytes --]

From bd0bd95e3786211effe728bae61ef5b02f6cc5f6 Mon Sep 17 00:00:00 2001
From: Thomas Danckaert <thomas.danckaert@gmail.com>
Date: Wed, 19 Apr 2017 18:14:38 +0200
Subject: [PATCH] SRFI-37: Account for zero-length arguments.

* module/srfi/srfi-37.scm (args-fold): When checking if an argument is
an option (starts with #\-), first check if the length is non-zero.
---
 module/srfi/srfi-37.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/module/srfi/srfi-37.scm b/module/srfi/srfi-37.scm
index 3f654af2c..c34b0d083 100644
--- a/module/srfi/srfi-37.scm
+++ b/module/srfi/srfi-37.scm
@@ -217,7 +217,8 @@ program-arguments in ARGS, as decided by the OPTIONS'
       (if (null? args)
 	  (apply values seeds)
 	  (let ((arg (car args)))
-	    (cond ((or (not (char=? #\- (string-ref arg 0)))
+	    (cond ((or (string-null? arg)
+		       (not (char=? #\- (string-ref arg 0)))
 		       (= 1 (string-length arg))) ;"-"
 		   (mutate-seeds! operand-proc arg)
 		   (set! args (cdr args)))
-- 
2.12.2


  reply	other threads:[~2017-04-19 16:32 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-07 15:34 bug#26013: (srfi srfi-37) chokes on empty string parameter Thomas Danckaert
2017-04-19 15:13 ` Andy Wingo
2017-04-19 16:32   ` Thomas Danckaert [this message]
2017-04-20  8:59     ` Andy Wingo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170419.183229.1069589305335594566.post@thomasdanckaert.be \
    --to=post@thomasdanckaert.be \
    --cc=26013@debbugs.gnu.org \
    --cc=ludo@gnu.org \
    --cc=wingo@igalia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).