`(new-ptr ,size)
)
+(defun foreign-string-length (foreign-string)
+ #+allegro `(ff:foreign-strlen ,foreign-string)
+ #-allegro
+ `(loop with size = 0
+ until (char= (deref-array ,ptr '(:array :unsigned-char) size) #\Null)
+ do (incf size)
+ finally return size))
+
+
(defmacro with-foreign-string ((foreign-string lisp-string) &body body)
(let ((result (gensym)))
`(let* ((,foreign-string (convert-to-foreign-string ,lisp-string))
(let* ((len (or len (strlen s)))
(str (make-string len)))
(dotimes (i len str)
- (setf (aref str i) (uffi:deref-array s '(:array :char) i)))))
+ (setf (schar str i) (code-char (uffi:deref-array s '(:array :byte) i))))))