X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/584285fba4d518f8d6f581b542ee6b38650ba287..8741fc3a02449de054b15589904bcfc2c30b6217:/gffi/interface.lisp diff --git a/gffi/interface.lisp b/gffi/interface.lisp index 88ce957..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.3 2006-08-16 11:02:45 espen Exp $ +;; $Id: interface.lisp,v 1.5 2007-04-06 16:06:24 espen Exp $ (in-package "GFFI") @@ -166,7 +166,8 @@ (defun foreign-funcall (cname args return-type) (: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 @@ (defun mkbinding (name return-type &rest arg-types) (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) @@ -453,7 +454,9 @@ (defun find-next-type-method (name type-spec &optional (error-p t)) ;; 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"