From 688630ccd8a9218592995112f29311a4c62d63e2 Mon Sep 17 00:00:00 2001 From: espen Date: Sun, 24 Apr 2005 13:24:41 +0000 Subject: [PATCH] Bug fix --- glib/genums.lisp | 24 ++++++++++++------------ glib/glib.lisp | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/glib/genums.lisp b/glib/genums.lisp index 783bde7..fe563b5 100644 --- a/glib/genums.lisp +++ b/glib/genums.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: genums.lisp,v 1.13 2005/04/23 16:48:50 espen Exp $ +;; $Id: genums.lisp,v 1.14 2005/04/24 13:24:41 espen Exp $ (in-package "GLIB") @@ -171,12 +171,12 @@ (t (error 'type-error :datum ,flags :expected-type '(,type ,@args))))))) -(defmethod from-alien-form (int (type (eql 'flags)) &rest args) +(defmethod from-alien-form (value (type (eql 'flags)) &rest args) (declare (ignore type)) `(loop - for mapping in ',(%map-flags args :int-symbol) - unless (zerop (logand ,int (first mapping))) - collect (second mapping))) + for (int symbol) in ',(%map-flags args :int-symbol) + when (= (logand ,value int) int) + collect symbol)) (defmethod to-alien-function ((type (eql 'flags)) &rest args) (declare (ignore type)) @@ -192,11 +192,11 @@ (defmethod from-alien-function ((type (eql 'flags)) &rest args) (declare (ignore type)) (let ((mappings (%map-flags args :int-symbol))) - #'(lambda (int) + #'(lambda (value) (loop - for mapping in mappings - unless (zerop (logand int (first mapping))) - collect (second mapping))))) + for (int symbol) in mappings + when (= (logand value int) int) + collect symbol)))) (defmethod writer-function ((type (eql 'flags)) &rest args) (declare (ignore type)) @@ -236,9 +236,9 @@ :expected-type ',name)))))) (defun ,int-flags (value) (loop - for mapping in ',(%map-flags args :int-symbol) - unless (zerop (logand value (first mapping))) - collect (second mapping))) + for (int symbol) in ',(%map-flags args :int-symbol) + when(= (logand value int) int) + collect symbol)) (defmethod alien-type ((type (eql ',name)) &rest args) (declare (ignore type args)) (alien-type 'flags)) diff --git a/glib/glib.lisp b/glib/glib.lisp index 6bd2dff..01bd66f 100644 --- a/glib/glib.lisp +++ b/glib/glib.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: glib.lisp,v 1.30 2005/04/23 16:48:50 espen Exp $ +;; $Id: glib.lisp,v 1.31 2005/04/24 13:27:20 espen Exp $ (in-package "GLIB") @@ -447,7 +447,7 @@ (destructuring-bind (element-type &optional (length '*)) args (if (eq length '*) (error "Can't use vector of variable size as return type") - `(map-c-vector 'vector #'identity ,c-vector ',element-type ',length)))) + `(map-c-vector 'vector #'identity ,c-vector ',element-type ,length)))) (defmethod copy-from-alien-function ((type (eql 'vector)) &rest args) (declare (ignore type)) -- 2.11.0