Hi,

I have a question about the implementation of %load-foreign-library on SBCL. It seems that the call to load-shared-object remembers the absolute pathname to the library that is loaded unless :dont-save t is used. This causes portability issues for my application, which can't load from the same path when used on different systems. Is there any reason to choose this behavior?

Of course, with :dont-save t, the user then has to call use-foreign-library again when starting up from the saved image, but I find this preferable to the crash I receive otherwise.

An example patch is included below.

Thanks.

--- src/cffi-sbcl.lisp~ 2009-04-14 19:33:40.000000000 -0700
+++ src/cffi-sbcl.lisp  2009-04-03 15:28:37.000000000 -0700
@@ -324,7 +324,7 @@
 (defun %load-foreign-library (name path)
  "Load a foreign library."
  (declare (ignore name))
-  (load-shared-object path))
+  (load-shared-object path :dont-save t))

 ;;; SBCL 1.0.21.15 renamed SB-ALIEN::SHARED-OBJECT-FILE but introduced
 ;;; SB-ALIEN:UNLOAD-SHARED-OBJECT which we can use instead.

--
Elliott Slaughter

"Don't worry about what anybody else is going to do. The best way to predict the future is to invent it." - Alan Kay