0.pre7.14.flaky4.3:
[sbcl.git] / src / code / run-program.lisp
index b7fb7c8..1dad7f9 100644 (file)
 ;;;; visible at GENESIS time.
 
 (def-alien-variable "environ" (* c-string))
+(push (lambda ()
+       ;; We redo this here to protect ourselves from this scenario:
+       ;;   * Build under one version of shared lib, save a core.
+       ;;   * Load core under another version of shared lib. ("Now
+       ;;     where was environ again?" SIGSEGV, etc.)
+       ;; Obviously it's a KLUDGE to do this hack for every alien
+       ;; variable, but as it happens, as of sbcl-0.7.0 this is the
+       ;; only alien variable used to implement SBCL, so it's not
+       ;; worth coming up with a general solution. (A general
+       ;; solution would be nice for users who want to have their
+       ;; alien code be preserved across a save/load cycle, but this
+       ;; problem with alien variables is only one of several
+       ;; problems which'd need to be solved before that can happen.)
+        (def-alien-variable "environ" (* c-string)))
+      *after-save-initializations*)
 
 (defun posix-environ ()
   "Return the Unix environment (\"man environ\") as a list of SIMPLE-STRINGs."