:code code
:message (if message
message
- (sqlite-error-string code)))))
+ (uffi:convert-from-cstring
+ (sqlite-error-string code))))))
(unless (signal condition)
(invoke-debugger condition))))
(def-foreign-type string-pointer (* (* :char)))
(def-foreign-type sqlite-row-pointer (* string-pointer))
+(defvar +null-errmsg-pointer+ (make-null-pointer 'errmsg))
+(defvar +null-string-pointer-pointer+ (make-null-pointer 'string-pointer))
+
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Lisp types used in declarations.
(defun sqlite-open (db-name &optional (mode 0))
(with-cstring (db-name-native db-name)
- (let ((db (%open db-name-native mode 0)))
+ (let ((db (%open db-name-native mode +null-errmsg-pointer+)))
(if (null-pointer-p db)
(signal-sqlite-error SQLITE-ERROR
(format nil "unable to open ~A" db-name))
(with-cstring (sql-native sql)
(let ((vm (allocate-foreign-object 'sqlite-vm)))
(with-foreign-object (sql-tail '(* :char))
- (let ((result (%compile db sql-native sql-tail vm 0)))
+ (let ((result (%compile db sql-native sql-tail vm +null-errmsg-pointer+)))
(if (= result SQLITE-OK)
vm
(progn
((= result SQLITE-DONE)
(free-foreign-object cols)
(free-foreign-object col-names)
- (values 0 (make-null-pointer 'string-pointer)
- (make-null-pointer 'string-pointer)))
+ (values 0 +null-string-pointer-pointer+ +null-string-pointer-pointer+))
(t
(free-foreign-object cols)
(free-foreign-object col-names)
(defun sqlite-finalize (vm)
(declare (type sqlite-vm-pointer vm))
- (let ((result (%finalize (deref-pointer vm 'sqlite-vm) 0)))
+ (let ((result (%finalize (deref-pointer vm 'sqlite-vm) +null-errmsg-pointer+)))
(if (= result SQLITE-OK)
(progn
(free-foreign-object vm)
(declare (type sqlite-row-pointer-type rows))
(with-foreign-object (rows-n :int)
(with-foreign-object (cols-n :int)
- (let ((result (%get-table db sql-native rows rows-n cols-n 0)))
+ (let ((result (%get-table db sql-native rows rows-n cols-n +null-errmsg-pointer+)))
(if (= result SQLITE-OK)
(let ((cn (deref-pointer cols-n :int))
(rn (deref-pointer rows-n :int)))
;;;;
(declaim (inline make-null-row))
(defun make-null-row ()
- (uffi:make-null-pointer 'string-pointer))
+ +null-string-pointer-pointer+)
(declaim (inline make-null-vm))
(defun make-null-vm ()