Index: /trunk/source/level-0/l0-cfm-support.lisp
===================================================================
--- /trunk/source/level-0/l0-cfm-support.lisp	(revision 14648)
+++ /trunk/source/level-0/l0-cfm-support.lisp	(revision 14649)
@@ -135,9 +135,11 @@
     (not (zerop count))))
 
-(defun shared-library-with-name (name)
+(defun shared-library-with-name (name &optional (is-unloaded nil))
   (let* ((namelen (length name)))
     (dolist (lib *shared-libraries*)
       (let* ((libname (shlib.soname lib)))
-	(when (%simple-string= name libname 0 0 namelen (length libname))
+	(when (and (%simple-string= name libname 0 0 namelen (length libname))
+		   (or (not is-unloaded) (and (null (shlib.map lib))
+					      (null (shlib.base lib)))))
 	  (return lib))))))
 
@@ -373,12 +375,5 @@
       (return lib))))
 
-(defun shared-library-with-name (name &optional (is-unloaded nil))
-  (let* ((namelen (length name)))
-    (dolist (lib *shared-libraries*)
-      (let* ((libname (shlib.soname lib)))
-	(when (and (%simple-string= name libname 0 0 namelen (length libname))
-		   (or (not is-unloaded) (and (null (shlib.map lib))
-					      (null (shlib.base lib)))))
-	  (return lib))))))
+
 
 ;;;    
@@ -1030,5 +1025,9 @@
           (open-shared-library-internal name)
           
-          (call-in-process (lambda () (open-shared-library-internal  name))
+          (call-in-process (lambda ()
+                             (handler-case (open-shared-library-internal  name)
+                               (error (condition) (values nil (format nil "~a" condition)))))
+                                                                     
+                             
                            (if (eq process :initial)
                              *initial-process*
