X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=glib%2Fgobject.foreign-gobject.lisp;h=33b84341924e98b9fe61c83ebdd08067202bf234;hb=8b6767cf4830672f2d929b66031f561857b9f1cd;hp=d02bea87eb2bee02580468138a91690e3988a144;hpb=c7066267e3baedd05b2a394f5b2dbdf2246278c7;p=cl-gtk2.git diff --git a/glib/gobject.foreign-gobject.lisp b/glib/gobject.foreign-gobject.lisp index d02bea8..33b8434 100644 --- a/glib/gobject.foreign-gobject.lisp +++ b/glib/gobject.foreign-gobject.lisp @@ -115,9 +115,10 @@ (gethash (pointer-address pointer) *foreign-gobjects*) (gethash (pointer-address pointer) *foreign-gobjects-ref-count*) (ref-count pointer)) - (awhen (gethash (pointer-address pointer) *foreign-gobjects*) - (setf (pointer it) nil) - (cancel-finalization it)) + (let ((object (gethash (pointer-address pointer) *foreign-gobjects*))) + (when object + (setf (pointer object) nil) + (cancel-finalization object))) (remhash (pointer-address pointer) *foreign-gobjects*) (remhash (pointer-address pointer) *foreign-gobjects-ref-count*) (g-object-unref pointer)) @@ -175,11 +176,12 @@ (defun get-g-object-for-pointer (pointer) (unless (null-pointer-p pointer) - (aif (gethash (pointer-address pointer) *foreign-gobjects*) - (prog1 it - (incf (gethash (pointer-address pointer) *foreign-gobjects-ref-count*)) - (debugf "increfering object ~A~%" pointer)) - (make-g-object-from-pointer pointer)))) + (let ((object (gethash (pointer-address pointer) *foreign-gobjects*))) + (if object + (prog1 object + (incf (gethash (pointer-address pointer) *foreign-gobjects-ref-count*)) + (debugf "increfering object ~A~%" pointer)) + (make-g-object-from-pointer pointer))))) (defmethod translate-from-foreign (pointer (type foreign-g-object-type)) (get-g-object-for-pointer pointer))