X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=db-oracle%2Foracle-sql.lisp;h=cbcfda84619a18f1ba434520a0ca7954d23b42ea;hb=11261eca2090842638d1b3b7c12b7cc1f6d58f09;hp=6a6aa3f4f5ba0ca6c88a93d00ebbf975d3426b3e;hpb=e105d1c4963b50edb966b2a3049bbe02ecdfabff;p=clsql.git diff --git a/db-oracle/oracle-sql.lisp b/db-oracle/oracle-sql.lisp index 6a6aa3f..cbcfda8 100644 --- a/db-oracle/oracle-sql.lisp +++ b/db-oracle/oracle-sql.lisp @@ -154,8 +154,8 @@ the length of that format.") (cond (database (with-slots (errhp) database - (uffi:with-foreign-objects ((errcode 'sb4) - (errbuf '(:array :unsigned-char #.+errbuf-len+))) + (let ((errcode (uffi:allocate-foreign-object 'sb4)) + (errbuf (uffi:allocate-foreign-string #.+errbuf-len+))) ;; ensure errbuf empty string (setf (uffi:deref-array errbuf '(:array :unsigned-char) 0) (uffi:ensure-char-storable (code-char 0))) @@ -169,6 +169,8 @@ the length of that format.") +errbuf-len+ +oci-htype-error+)) (let ((subcode (uffi:deref-pointer errcode 'sb4)) (errstr (uffi:convert-from-foreign-string errbuf))) + (uffi:free-foreign-object errcode) + (uffi:free-foreign-object errbuf) (unless (and nulls-ok (= subcode +null-value-returned+)) (error 'sql-database-error :database database