From 947eba0276f398fa92a42efdc988fa6caa209dc4 Mon Sep 17 00:00:00 2001 From: Dmitry Kalyanov Date: Sun, 4 Oct 2009 14:33:58 +0400 Subject: [PATCH] Safer way to compile GObject property accessors that works with lisps other than SBCL with linkage table --- glib/gobject.meta.lisp | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) mode change 100644 => 100755 glib/gobject.meta.lisp diff --git a/glib/gobject.meta.lisp b/glib/gobject.meta.lisp old mode 100644 new mode 100755 index d7cb8c7..55a48ab --- a/glib/gobject.meta.lisp +++ b/glib/gobject.meta.lisp @@ -153,19 +153,31 @@ (gobject-fn-effective-slot-definition-g-getter-fn effective-slot) (and property-getter (if (stringp property-getter) - (compile nil `(lambda (object) - (foreign-funcall ,property-getter - g-object object - ,property-type))) + (if (foreign-symbol-pointer property-getter) + (compile nil `(lambda (object) + (foreign-funcall ,property-getter + g-object object + ,property-type))) + (progn + (warn "Property reader function '~A' has not been found" property-getter) + (lambda (object) + (declare (ignore object)) + (error "Property reader function '~A' has not been found" property-getter)))) property-getter)) (gobject-fn-effective-slot-definition-g-setter-fn effective-slot) (and property-setter (if (stringp property-setter) - (compile nil `(lambda (object new-value) - (foreign-funcall ,property-setter - g-object object - ,property-type new-value - :void))) + (if (foreign-symbol-pointer property-setter) + (compile nil `(lambda (object new-value) + (foreign-funcall ,property-setter + g-object object + ,property-type new-value + :void))) + (progn + (warn "Property writer function '~A' has not been found" property-setter) + (lambda (object) + (declare (ignore object)) + (error "Property writer function '~A' has not been found" property-setter)))) property-setter))))))) effective-slot)) -- 1.7.10.4