anchor.diff:  null-terminated."
     (let ((value-ptr nil))
       (unwind-protect
  -         (with-foreign-string ((key-ptr key-len) key
  -                               :null-terminated-p nil)
  +         (with-foreign-string ((key-ptr key-len) key :null-terminated-p nil)
              (with-foreign-object (size-ptr :int)
                (setf value-ptr (funcall fn (ptr-of db) key-ptr key-len size-ptr))
                (if (null-pointer-p value-ptr)
  
positive.code:         (foreign-string-free value-ptr)))))
  
  (defun put-string->string (db key value fn)
    (or (funcall fn (ptr-of db) key value)
        (maybe-raise-error db (format nil "(key ~a) (value ~a)" key value))))
  
  (defun put-string->octets (db key value fn)
    "Note that for the key we allocate a foreign string that is not
  null-terminated."
    (declare (type (vector (unsigned-byte 8)) value))
    (let ((value-len (length value)))
      (with-foreign-string ((key-ptr key-len) key :null-terminated-p nil)
        (with-foreign-object (value-ptr :unsigned-char value-len)
  
negative.code:        do (setf (aref value i) (mem-aref value-ptr :unsigned-char i))
         finally (return value))))
  
  
  ;; (defun your-wrapper-around-the-foreign-function (...)
  ;;   (let ((ptr (your-foreign-function ...)))
  ;;     (unwind-protect
  