X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/49ef0cdc631ac61e8a114fec45cca75786580915..b7c49e0c03879ad0af9fcfd0910357290f32d35a:/gffi/interface.lisp diff --git a/gffi/interface.lisp b/gffi/interface.lisp index 35a1a2f..6778ea6 100644 --- a/gffi/interface.lisp +++ b/gffi/interface.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: interface.lisp,v 1.2 2006-04-26 19:19:14 espen Exp $ +;; $Id: interface.lisp,v 1.5 2007-04-06 16:06:24 espen Exp $ (in-package "GFFI") @@ -166,7 +166,8 @@ (:language :stdc)))) `(funcall (load-time-value - (ffi::foreign-library-function ,cname (ffi::foreign-library :default) + (ffi::foreign-library-function + ,cname (ffi::foreign-library :default) #?(clisp>= 2 40)nil nil (ffi:parse-c-type ',c-function))) ,@fparams))) @@ -227,7 +228,7 @@ (system-area-pointer address)))))) #+clisp (ffi::foreign-library-function name - (ffi::foreign-library :default) + (ffi::foreign-library :default) #?(clisp>= 2 40)nil nil (ffi:parse-c-type c-function))) (return-value-translator (from-alien-function return-type))) (multiple-value-bind (arg-translators cleanup-funcs) @@ -423,7 +424,7 @@ (lookup-method (type-spec) (if (and (symbolp type-spec) (find-class type-spec nil)) (let ((class (find-class type-spec))) - #+clisp + #?(or (sbcl>= 0 9 15) (featurep :clisp)) (unless (class-finalized-p class) (finalize-inheritance class)) (search-method-in-cpl-order @@ -453,7 +454,9 @@ ;; This is to handle unexpandable types whichs doesn't name a ;; class. It may cause infinite loops with illegal ;; call-next-method calls - (unless (and (symbolp type-spec) (find-class type-spec nil)) + (unless (or + (null type-spec) + (and (symbolp type-spec) (find-class type-spec nil))) (search-nodes (get name 'built-in-type-hierarchy))) (when error-p (error "No next type method ~A for type specifier ~A"