From 58c1379454b30eb4d0f8729f7a41e7609f1bff1a Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau <fare@tunes.org> Date: Fri, 19 Mar 2010 02:26:43 -0400 Subject: [PATCH] Fix an off-by-one bug in parsing source-registry configurations as strings. --- asdf.lisp | 8 +++++--- asdf.texinfo | 2 +- test/test-utilities.script | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/asdf.lisp b/asdf.lisp index 08c29b8f..76710f53 100644 --- a/asdf.lisp +++ b/asdf.lisp @@ -262,7 +262,7 @@ ;; This parameter isn't actually user-visible ;; -- please use the exported function ASDF:ASDF-VERSION below. ;; the 1+ hair is to ensure that we don't do an inadvertent find and replace - (subseq "VERSION:1.654" (1+ (length "VERSION")))) + (subseq "VERSION:1.655" (1+ (length "VERSION")))) (defun asdf-version () "Exported interface to the version of ASDF currently installed. A string. @@ -2393,7 +2393,9 @@ with a different configuration, so the configuration would be re-read then." '(:output-translations :inherit-configuration)) ((not (stringp string)) (error "environment string isn't: ~S" string)) - ((find (char string 0) "\"(") + ((eql (char string 0) #\") + (parse-output-translations-string (read-from-string string))) + ((eql (char string 0) #\() (validate-output-translations-form (read-from-string string))) (t (loop @@ -2416,7 +2418,7 @@ with a different configuration, so the configuration would be re-read then." (t (setf source s))) (setf start (1+ i)) - (when (>= start end) + (when (> start end) (when source (error "Uneven number of components in source to destination mapping ~S" string)) (unless inherit diff --git a/asdf.texinfo b/asdf.texinfo index 4f28ee07..a139fd90 100644 --- a/asdf.texinfo +++ b/asdf.texinfo @@ -2123,7 +2123,7 @@ which by default is the same as using Configuration directories consist in files each contains a list of directives without any enclosing -@code{(:asdf-output-translations ...)} form. +@code{(:output-translations ...)} form. The files will be sorted by namestring as if by @code{#'string<} and the lists of directives of these files with be concatenated in order. An implicit @code{:inherit-configuration} will be included diff --git a/test/test-utilities.script b/test/test-utilities.script index 9475d2b1..602ea487 100644 --- a/test/test-utilities.script +++ b/test/test-utilities.script @@ -41,4 +41,20 @@ (asdf::version-satisfies (asdf:asdf-version) "1.608")) (assert (not (asdf::version-satisfies (asdf:asdf-version) "666"))) + +(assert + (equal (asdf::parse-output-translations-string "/foo:/bar::/baz:/quux") + '(:output-translations + ("/foo" "/bar") + :inherit-configuration + ("/baz" "/quux")))) +(assert + (equal (asdf::parse-output-translations-string "/:") + '(:output-translations ("/" nil) :ignore-inherited-configuration))) +(assert + (equal (asdf::parse-output-translations-string "/::") + '(:output-translations ("/" nil) :inherit-configuration))) +(assert + (equal (asdf::parse-output-translations-string "/:/") + '(:output-translations ("/" "/") :ignore-inherited-configuration))) ) -- GitLab