X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=uffi%2Fclsql-uffi.lisp;h=331db7d3ab795d3f974dc09f834ca180f452532b;hb=8b42ade98431d9089422974c26d7ec593173d062;hp=1d072edcd2bc35f1a0e279a68f3f4db7dc12c48e;hpb=81d2ebcdd182dd674191b29e00274c82660fd3f3;p=clsql.git diff --git a/uffi/clsql-uffi.lisp b/uffi/clsql-uffi.lisp index 1d072ed..331db7d 100644 --- a/uffi/clsql-uffi.lisp +++ b/uffi/clsql-uffi.lisp @@ -7,7 +7,7 @@ ;;;; Programmers: Kevin M. Rosenberg ;;;; Date Started: Mar 2002 ;;;; -;;;; $Id: clsql-uffi.lisp,v 1.32 2003/06/23 19:25:30 kevin Exp $ +;;;; $Id$ ;;;; ;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -21,7 +21,7 @@ (defun canonicalize-type-list (types auto-list) "Ensure a field type list meets expectations" - (declaim (optimize (speed 3) (safety 0))) + (declare (optimize (speed 3) (safety 0))) (do ((i 0 (1+ i)) (new-types '()) (length-types (length types)) @@ -87,9 +87,9 @@ (uffi:def-type char-ptr-def (* :unsigned-char)) -(defun convert-raw-field (char-ptr types index) +(defun convert-raw-field (char-ptr types index &optional length) (declare (optimize (speed 3) (safety 0) (space 0)) - (type char-ptr-def char-ptr)) + (type char-ptr-def char-ptr)) (let ((type (if (listp types) (nth index types) types))) @@ -110,5 +110,9 @@ low32 (make-64-bit-integer high32 low32))))) (t - (uffi:convert-from-foreign-string char-ptr :locale :none))))))) - + (if length + (uffi:convert-from-foreign-string char-ptr :locale :none + :null-terminated-p nil + :length length) + (uffi:convert-from-foreign-string char-ptr :locale :none)))))))) +