sellout/external-program

reformat-environment and make-shell-string do not fit together

Closed this issue · 1 comments

(external-program::make-shell-string "ls" '(".") '(("PATH" . "")) nil)

yields

    0[11]: (EXTERNAL-PROGRAM::MAKE-SHELL-STRING "ls" (".") (("PATH" . ""))  NIL)
    1[11]: (EXTERNAL-PROGRAM::REFORMAT-ENVIRONMENT (("PATH" . "")))
    1[11]: returned ("PATH=''")
    0[11]: returned " #<Printer Error, obj=#x10000000af9: `\"PATH=''\"' is not of the expected type `LIST'>"

because REFORMAT-ENVIRONMENT flattens the list of conses.

RUN on ACL (and probably abcl) breaks on this; for lispworks the environment is never passed down, so it is not affected. Other backends do not use make-shell-string.

Test environment-vars-should-override-existing was failing on ACL (maybe others too?) due to this.