On 7/1/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
"Rich Rattanni" <[EMAIL PROTECTED]> wrote:
> All:
> I am using SQlite to store several rows of binary data into a
> database. In my code I have a several character arrays containing
> data. I then do the following...
>
> 1.Begin Transaction
> 2.For each blob...
> 2a.sqlite3_prepare("Insert statement...")
> 2b.call sqlite3_bind_blob(stmt, col#, dataPointer, sizeOfData,
SQLITE_TRANSIENT)
> 2c.sqlite3_step()
> 2d.end
> 3.Free data pointers.
> 4.Commit Transaction
>
> This code segfaults. Now If i move the free data pointers to outside
> the commit, everything is fine. According to the API documentation,
> "If the fifth argument has the value SQLITE_TRANSIENT, then SQLite
> makes its own private copy of the data immediately, before the
> sqlite3_bind_*() routine returns." I may be misinterperting the
> documentation, or perhaps this is a bug in sqlite (course I am
> assuming the former is true).
>
> Could anyone shed some light on my mystery? I am wondering if I need
> to enable (when sqlite is compiled) support for SQLITE_TRANSIENT?
>
The documentation is correct - SQLITE_TRANSIENT causes SQLite
to make a copy of the data before sqlite3_bind_blob() returns.
You should be able to free the dataPointer prior to the sqlite3_step().
No special compile-time optimizations are required.
If you have a reproducible test case, we will look into the problem.
--
D. Richard Hipp <[EMAIL PROTECTED]>
-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------
Sir:
Thanks for the quick reply. I will try to work up a test case in
my spare time I had GDB running when this problem occured, and it
said the offending function was sqlite3pager_get(). I am not sure if
this helps in any way. Again thanks for your response.
--
Rich Rattanni
-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------