From: Kevin Rosenberg Date: Mon, 8 Feb 2010 23:07:17 +0000 (-0700) Subject: Version 1.8.5: Fix long-long detection X-Git-Tag: v1.8.6~1 X-Git-Url: http://git.kpe.io/?p=uffi.git;a=commitdiff_plain;h=4440dd8df02fa22120c5c742989b1daa1fde84d4 Version 1.8.5: Fix long-long detection --- diff --git a/ChangeLog b/ChangeLog index e9efbda..326b8b9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2010-02-08 Kevin Rosenberg + * Version 1.8.5 + * src/primitives.lisp: Fix for long-long patch + (Stelian Ionescu) + * src/i18n.lisp: Changed logic of how to deal + with an passed encoding value of il. + 2010-02-08 Kevin Rosenberg * Version 1.8.4 * sql/primitives.lisp: Improved detection for diff --git a/debian/changelog b/debian/changelog index 93ea97a..c8446a6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cl-uffi (1.8.5-1) unstable; urgency=low + + * New upstream + + -- Kevin M. Rosenberg Mon, 08 Feb 2010 16:06:57 -0700 + cl-uffi (1.8.4-1) unstable; urgency=low * New upstream diff --git a/src/i18n.lisp b/src/i18n.lisp index 1d6a485..ca2c1b4 100644 --- a/src/i18n.lisp +++ b/src/i18n.lisp @@ -58,8 +58,7 @@ encoding.") (defun lookup-foreign-encoding (normalized) (cdr (assoc normalized *foreign-encoding-mapping* :test 'eql))) -(defmacro string-to-octets (str &key (encoding *default-foreign-encoding*)) - "Converts a Lisp string to a vector of octets." +(defmacro string-to-octets (str &key encoding) (declare (ignorable encoding)) #-(or allegro lispworks openmcl sbcl) (map-into (make-array (length str) :element-type '(unsigned-byte 8)) @@ -69,7 +68,7 @@ encoding.") (let ((fe (gensym "FE-")) (ife (gensym "IFE-")) (s (gensym "STR-"))) - `(let* ((,fe ,encoding) + `(let* ((,fe (or ,encoding *default-foreign-encoding*)) (,ife (when ,fe (lookup-foreign-encoding ,fe))) (,s ,str)) (values @@ -87,7 +86,7 @@ encoding.") (let ((fe (gensym "FE-")) (ife (gensym "IFE-")) (s (gensym "STR-"))) - `(let* ((,fe ,encoding) + `(let* ((,fe (or ,encoding *default-foreign-encoding*)) (,ife (when ,fe (lookup-foreign-encoding ,fe))) (,s ,str)) (if ,ife @@ -96,7 +95,7 @@ encoding.") ) -(defmacro octets-to-string (octets &key (encoding *default-foreign-encoding*)) +(defmacro octets-to-string (octets &key encoding) "Converts a vector of octets to a Lisp string." (declare (ignorable encoding)) #-(or allegro lispworks openmcl sbcl) @@ -110,7 +109,7 @@ encoding.") (let ((fe (gensym "FE-")) (ife (gensym "IFE-")) (oct (gensym "OCTETS-"))) - `(let* ((,fe ,encoding) + `(let* ((,fe (or ,encoding *default-foreign-encoding*)) (,ife (when ,fe (lookup-foreign-encoding ,fe))) (,oct ,octets)) (values @@ -130,7 +129,7 @@ encoding.") (let ((fe (gensym "FE-")) (ife (gensym "IFE-")) (oct (gensym "OCTETS-"))) - `(let* ((,fe ,encoding) + `(let* ((,fe (or ,encoding *default-foreign-encoding*)) (,ife (when ,fe (lookup-foreign-encoding ,fe))) (,oct ,octets)) (if ,ife @@ -139,7 +138,7 @@ encoding.") ) -(defun foreign-encoded-octet-count (str &key (encoding *default-foreign-encoding*)) +(defun foreign-encoded-octet-count (str &key encoding) "Returns the octets required to represent the string when passed to a ~ foreign function." (declare (ignorable encoding)) @@ -148,7 +147,8 @@ foreign function." ;; with external-format #+(or (and allegro ics) (and sbcl sb-unicode) (and clisp i18n)) - (length (string-to-octets str :encoding encoding)) + (length (string-to-octets str :encoding + (or encoding *default-foreign-encoding*))) #-(or (and allegro ics) (and sbcl sb-unicode) (and clisp i18n)) (length str) diff --git a/src/primitives.lisp b/src/primitives.lisp index b7c0283..a43eb8d 100644 --- a/src/primitives.lisp +++ b/src/primitives.lisp @@ -141,12 +141,14 @@ supports takes advantage of this optimization." (:unsigned-short . c-call:unsigned-short) (:int . alien:integer) (:unsigned-int . c-call:unsigned-int) (:long . c-call:long) (:unsigned-long . c-call:unsigned-long) - #+#.(cl:if (cl:find-symbol (cl:string '#:long-long) - (cl:string '#:c-call)) + #+#.(cl:if (cl:and (cl:find-package (cl:string '#:c-call)) + (cl:find-symbol (cl:string '#:long-long) + (cl:string '#:c-call))) '(and) '(or)) (:long-long . c-call:long-long) - #+#.(cl:if (cl:find-symbol (cl:string '#:unsigned-long-long) - (cl:string '#:c-call)) + #+#.(cl:if (cl:and (cl:find-package (cl:string '#:c-call)) + (cl:find-symbol (cl:string '#:unsigned-long-long) + (cl:string '#:c-call))) '(and) '(or)) (:unsigned-long-long . c-call:unsigned-long-long) (:float . c-call:float) (:double . c-call:double)