diff options
author | Matthias Benkard <code@mail.matthias.benkard.de> | 2008-03-19 14:20:28 +0100 |
---|---|---|
committer | Matthias Benkard <code@mail.matthias.benkard.de> | 2008-03-19 14:20:28 +0100 |
commit | edd93c244d8e689ce32fa5b77a917dc7fd082561 (patch) | |
tree | 2efb52ef41349fb0464fb982d4cb0356dd16e7c8 /Lisp | |
parent | 4b98e8d6f54256810b243afe9ea9abf5ad6d445b (diff) |
Fix method invocation on Mac OS X.
darcs-hash:389135940affce22558648db2fd7e25cebc551bd
Diffstat (limited to 'Lisp')
-rw-r--r-- | Lisp/method-invocation.lisp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/Lisp/method-invocation.lisp b/Lisp/method-invocation.lisp index 29ad3c6..4a3c209 100644 --- a/Lisp/method-invocation.lisp +++ b/Lisp/method-invocation.lisp @@ -296,19 +296,18 @@ easier to use with __apply__. &aux (class-ptr (%objcl-object-get-class (pointer receiver)))) (cons (cffi:pointer-address class-ptr) (cffi:pointer-address (pointer-to selector))) - (let* ((class (object-get-class receiver)) - (signature + (let* ((signature (objc-or (if (object-is-class-p receiver) - (primitive-invoke class + (primitive-invoke receiver "methodSignatureForSelector:" 'id selector) - (primitive-invoke class + (primitive-invoke (object-get-class receiver) "instanceMethodSignatureForSelector:" 'id selector)) (error (make-condition 'message-not-understood - :class class + :class (object-get-class receiver) :selector selector)))) (argc (primitive-invoke signature "numberOfArguments" :unsigned-int)) (method-return-typestring (primitive-invoke signature |