Hi,
PZMQ uses (foreign-type-size) dynamically on built-in types in its getsockopt functions, which is called on every recv-string message call.
Please apply the following short patch, it seems self-obviously correct.
Regards, Max
From c3f6ede805431eac6d96379691ab54a0a951d4f3 Mon Sep 17 00:00:00 2001 From: Max Mikhanosha max@openchat.com Date: Thu, 23 May 2013 21:50:58 -0400 Subject: [PATCH] Fold (foreign-type-size <built-in-type>) to constants
--- src/types.lisp | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/src/types.lisp b/src/types.lisp index 582a94d..ea5a020 100644 --- a/src/types.lisp +++ b/src/types.lisp @@ -1009,3 +1009,12 @@ (defctype :ullong :unsigned-long-long) (:uintptr . :pointer)) (:unsigned-char :unsigned-short :unsigned-int :unsigned-long :unsigned-long-long)))) + +;; Fold foreign-type-size on built-in types to constants +(define-compiler-macro foreign-type-size (&whole form type) + (if (constantp type) + (let ((type (eval type))) + (if (member type *built-in-foreign-types*) + (%foreign-type-size type) + form)) + form))