summaryrefslogtreecommitdiff
path: root/Lisp/method-invocation.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2007-09-17 21:43:03 +0200
committerMatthias Benkard <code@mail.matthias.benkard.de>2007-09-17 21:43:03 +0200
commitc011b6b9863920f05a44ef3411010e1062388527 (patch)
tree671ced24df05f3b18476d765444121a44ab524b3 /Lisp/method-invocation.lisp
parent1bd58fa0e733f1137c2fc46d61bb9faf41551813 (diff)
PRIMITIVE-INVOKE: Don't break upon invocations with a void return type.
darcs-hash:85d12638eaa8b5a775a9f347b30e0b733c6dfd52
Diffstat (limited to 'Lisp/method-invocation.lisp')
-rw-r--r--Lisp/method-invocation.lisp5
1 files changed, 4 insertions, 1 deletions
diff --git a/Lisp/method-invocation.lisp b/Lisp/method-invocation.lisp
index 29c6d63..bb6282f 100644
--- a/Lisp/method-invocation.lisp
+++ b/Lisp/method-invocation.lisp
@@ -210,7 +210,9 @@ Returns: *result* --- the return value of the method invocation.
(the fixnum (length args)))
(objc-arg-ptrs '(:pointer :void)
real-argc)
- (return-value-cell return-c-type)
+ (return-value-cell (if (eq return-c-type :void)
+ :int
+ return-c-type))
(objc-arg-buffer +pessimistic-allocation-type+
real-argc))
(dotimes (i real-argc)
@@ -268,6 +270,7 @@ Returns: *result* --- the return value of the method invocation.
(make-instance return-type
:pointer (cffi:mem-ref return-value-cell
return-c-type))))
+ ((:void) (values))
(otherwise (cffi:mem-ref return-value-cell
return-c-type)))))))))))