From 01ea3765ca1164c3e122eec84d6cf3e25e351c57 Mon Sep 17 00:00:00 2001 From: Nathan Bird Date: Fri, 6 Jan 2012 16:39:09 -0500 Subject: [PATCH] Removing odbc::%cstring-into-vector -- unused and unreliable. The idea of the function was to copy out of c string memory into a lisp string a byte at a time, converting to lisp characters as we go. However: * this doesn't work with multibyte charsets * the underlying deref-array funcall would sometimes pull the entire array into lisp to then get at the single element-- for each element. * set elements in the lisp array using schar but there's no guarantee that the lisp array is a simple-string. Newer SBCL's err on this. --- db-odbc/odbc-api.lisp | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/db-odbc/odbc-api.lisp b/db-odbc/odbc-api.lisp index fe9d6f8..208dafa 100644 --- a/db-odbc/odbc-api.lisp +++ b/db-odbc/odbc-api.lisp @@ -48,21 +48,6 @@ May be locally bound to something else if a certain type is necessary.") (char-code (char ,string i)))) (setf (deref-array char-ptr '(:array :byte) ,size) 0))))) -(defun %cstring-into-vector (ptr vector offset size-in-bytes) - (dotimes (i size-in-bytes) - (setf (schar vector offset) - (ensure-char-character - ;; this is MUCH faster than (sb-alien:deref ptr i) even though - ;; sb-alien:deref makes more sense. I snagged this by looking at - ;; cffi which we had used previously without this bug - #+(and sbcl (not cffi)) - (sb-sys:sap-ref-8 (sb-alien:alien-sap ptr) i) - #-(and sbcl (not cffi)) - (deref-array ptr '(:array :unsigned-char) i) - )) - (incf offset)) - offset) - (defmacro with-allocate-foreign-string ((var len) &body body) "Safely does uffi:allocate-foreign-string-- making sure we do the uffi:free-foreign-object" `(let ((,var)) -- 2.34.1