"Andy Chambers" achambers.home@googlemail.com writes:
(value :string) (len :int) ;; not really an int but cffi takes care of this for us (destructor :int))
Everything is pretty straightforward apart from the last two parameters. Length is supposed to be the length of the value being passed in (or -1 if the value is null terminated). The destructor is supposed to be a function that frees the memory required by `value' after sqlite is finished with it. For destructor, you can use the special value 0 if the memory is in "unmanaged" space. So I have a few questions...
- If you specify the type as :string, does cffi pass it through as a
null terminated string?
Yes.
- Does cffi take care of freeing a string once the C library is
finished with it or should I define a callback to use for the destructor.
The semantics described in http://common-lisp.net/project/cffi/manual/html_node/Tutorial_002dMemory.htm... are still accurate.
So the answer is "just what does `once the C library is finished with it' mean anyway?"
- With my current code, I'm not getting any memory errors but I am
getting weird values in the database.
ˆ|Ñø·Ñø·IBUTE|ˆ|˜Â'ø|ˆ|˜Â'ø|Ñø·Ñø·IBUTE||
Any ideas what's going on here?
See footnote ¹ on the page I linked above.